當前位置:首頁 » 編程軟體 » 編譯原理注釋的正則表達式怎麼寫

編譯原理注釋的正則表達式怎麼寫

發布時間: 2022-09-06 15:10:38

編譯原理中,a和b的個數相等的正則表達式該怎麼寫

判定a和b的個數相等不能使用正則語言,需要使用上下文無關語言,下推自動機利用堆棧記憶和處理a和b的個數之間的關系。
所以沒有能夠描述你所要求的正則表達式。

⑵ 正則表達式怎麼編寫

<%
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches '建立變數。
Set regEx = New RegExp '建立正則表達式。
regEx.Pattern = patrn '設置模式。
regEx.IgnoreCase = True '設置是否區分字元大小寫。
regEx.Global = True '設置全局可用性。
Set Matches = regEx.Execute(strng) '執行搜索。
For Each Match in Matches '遍歷匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & "<BR>"
Next
RegExpTest = RetStr
End Function
response.write RegExpTest("[ij]s.", "IS1 Js2 IS3 is4")
%>
在這個例子中,我們查找字元串中有無is或者js這兩個詞,忽略大小寫。運行的結果如下:
Match found at position 0. Match Value is 'IS1'.
Match found at position 4. Match Value is 'Js2'.
Match found at position 8. Match Value is 'IS3'.
Match found at position 12. Match Value is 'is4'.
下面我們就介紹這三個對象和集合。
1、RegExp對象是最重要的一個對象,它有幾個屬性,其中:
○Global 屬性,設置或返回一個 Boolean 值,該值指明在整個搜索字元串時模式是全部匹配還是只匹配第一個。如果搜索應用於整個字元串,Global 屬性的值為 True,否則其值為 False。默認的設置為 False。
○IgnoreCase 屬性,設置或返回一個Boolean值,指明模式搜索是否區分大小寫。如果搜索是區分大小寫的,則 IgnoreCase 屬性為 False;否則為 True。預設值為 False。
○Pattern 屬性,設置或返回被搜索的正則表達式模式。必選項。總是一個 RegExp 對象變數。
2、Match 對象
匹配搜索的結果是存放在Match對象中,提供了對正則表達式匹配的只讀屬性的訪問。 Match 對象只能通過 RegExp 對象的 Execute 方法來創建,該方法實際上返回了 Match 對象的集合。所有的 Match 對象屬性都是只讀的。在執行正則表達式時,可能產生零個或多個 Match 對象。每個 Match 對象提供了被正則表達式搜索找到的字元串的訪問、字元串的長度,以及找到匹配的索引位置等。
○FirstIndex 屬性,返回在搜索字元串中匹配的位置。FirstIndex 屬性使用從零起算的偏移量,該偏移量是相對於搜索字元串的起始位置而言的。換言之,字元串中的第一個字元被標識為字元 0
○Length 屬性,返回在字元串搜索中找到的匹配的長度。
○Value 屬性,返回在一個搜索字元串中找到的匹配的值或文本。
3、Matches 集合
正則表達式 Match 對象的集合。Matches 集合中包含若干獨立的 Match 對象,只能使用 RegExp 對象的 Execute 方法來創建之。與獨立的 Match 對象屬性相同,Matches `集合的一個屬性是只讀的。在執行正則表達式時,可能產生零個或多個 Match 對象。每個 Match 對象都提供了與正則表達式匹配的字元串的訪問入口、字元串的長度,以及標識匹配位置的索引。
學習了這三個對象和集合,如何應用於字元串的判斷和替換呢?regExp對象的三個方法正好解決了這個問題,它們是Replace方法、Test方法和Execute方法。
1、Replace 方法
替換在正則表達式查找中找到的文本。我們還是先看個例子:下面的例子說明了 Replace 方法的用法。
<%
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立變數。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正則表達式。
regEx.Pattern = patrn ' 設置模式。
regEx.IgnoreCase = True ' 設置是否區分大小寫。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。
End Function
Response.write ReplaceTest("fox", "cat") & "<BR>" ' 將 'fox' 替換為 'cat'。
Response.write ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1") ' 交換詞對.
%>
2、Test 方法
對指定的字元串執行一個正則表達式搜索,並返回一個 Boolean 值指示是否找到匹配的模式。正則表達式搜索的實際模式是通過RegExp對象的Pattern屬性來設置的。RegExp.Global屬性對Test方法沒有影響。
如果找到了匹配的模式,Test方法返回True;否則返回False。下面的代碼說明了Test 方法的用法。
<%
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立變數。
Set regEx = New RegExp ' 建立正則表達式。
regEx.Pattern = patrn ' 設置模式。
regEx.IgnoreCase = False ' 設置是否區分大小寫。
retVal = regEx.Test(strng) ' 執行搜索測試。
If retVal Then
RegExpTest = "找到一個或多個匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
Response.write RegExpTest("is.", "IS1 is2 IS3 is4")
%>
3、Execute 方法
對指定的字元串執行正則表達式搜索。正則表達式搜索的設計模式是通過 RegExp 對象的 Pattern 來設置的。
Execute 方法返回一個 Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。

⑶ 正則表達式注釋

當正則表達式過於復雜時,可以像普通的程序語言那樣為正則表達式添加註釋,以方便閱讀。當設定了「x」修正符後,字元組(即][]內的內容)之外的所有空白字元會被忽略,#號和換行符之間的內容會被視為注釋。多說無益,舉個例子:

$text = '[email protected]';
$reg = '{
\b
#把捕獲的地址保存到$1
(
\w[-.\w]* #username
@
[-\w]+(\.[-\w]+)*\.(com|e|info) #hostname
)
\b
}ix';
//$reg = '/\b(\w[-.\w]*@[-\w]+(\.[-\w]+)*\.(com|e|info))\b/ix';
$text = preg_replace($reg,'<a href="mailto:$1">$1</a>',$text);
var_mp($text);

運行一下,你會發現郵箱地址被替換成一個鏈接了。

⑷ 編譯原理,正則表達式的低級基礎問題

1、正則表達式:0(0|1)*1
2、由於不方便畫圖,最簡DFA用狀態表表示如下:
(1)開始狀態S------輸入0------->狀態A
(2)狀態A-------輸入0-------->狀態A
(3)狀態A-------輸入1-------->狀態B(可接受狀態)
(4)狀態B-------輸入0-------->狀態A
(5)狀態B-------輸入1-------->狀態B(可接受狀態)

⑸ 編譯原理正則表達式化簡

你好,語言L={a}{a,b}∗({ϵ}∪({.,_}{a,b}{a,b}∗))L={a}{a,b}

({ϵ}∪({.,_}{a,b}{a,b}

))
這個語言是指,由a開頭,後接任意長度的a、b串,然後再接空串(代表結束)。或者是接以.或_開頭的,後接長度大於等於1的a、b串。

正則表達式(Regular Expression, RE)是一種用來描述正則語言的更緊湊的表示方法。

⑹ 正則表達式是什麼該怎麼用

正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。

正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。

給定一個正則表達式和另一個字元串,我們可以達到如下的目的:

1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」):

2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。

正則表達式應用——實例應用

  1. 驗證用戶名和密碼:("^[a-zA-Z]w{5,15}$")正確格式:"[A-Z][a-z]_[0-9]"組成,並且第一個字必須為字母6~16位;

2.驗證電話號碼:("^(d{3,4}-)d{7,8}$")正確格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

3.驗證手機號碼:"^1[3|4|5|7|8][0-9]{9}$";

4.驗證身份證號(15位):"d{14}[[0-9],0-9xX]",(18位):"d{17}[[0-9],0-9xX]";

5.驗證Email地址:("^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$");

6.只能輸入由數字和26個英文字母組成的字元串:("^[A-Za-z0-9]+$");

7.整數或者小數:^[0-9]+([.][0-9]+){0,1}$

8.只能輸入數字:"^[0-9]*$"。

9.只能輸入n位的數字:"^d{n}$"。

10.只能輸入至少n位的數字:"^d{n,}$"。

⑺ 編譯原理-用正則表達式表示下面的內容

(1)[a-z]
(2)^[24680]+$ 所有數字都為偶數 ^(?=[1-9])\d*[02468]$|^[02468]$ 所有偶數

(3)^(?=[a-zA-Z0-9]+).*@[^\.]+\.[a-z]+$

測試有效

⑻ 編譯原理這個正規表達式是怎麼寫出來的呀

主要就是後面的兩個條件:

  1. 至少2個1,

  2. 任何2個1之間有偶數個0

abd都不滿足第2條

⑼ 正則表達式怎麼寫

[0-9A-Z][0-9A-Z]{0,i}\/[0-9A-Z]{0,14-i}[0-9A-Z]

不知道沒有變數該怎麼辦啊,以前從來沒有遇到過這種不定形式的規則(但是真的盡力了就作為一個參考的思路吧……當初被編譯原理虐過所以萬分同情樓主!

二樓的答案之所以【不可行】是由於「/"也參與了閉包,導致"/"零次或多次出現
QQA/2Q/23 如果輸入也會是TRUE

「/」是否需要轉義不清楚,默認當做需要轉的考慮了

另,求這個軟體的名稱?很想知道~~多謝

⑽ 編譯原理:c語言標識符的正則表達式

C語言中的標識符:
標識符由字母、數字、下劃線「_」組成,並且首字母不能是數字.
java語言中的標識符:
標識符由字母、數字、下劃線「_」、美元符號「$」組成,並且首字母不能是數字。
一般標識符由字母、數字、下劃線「_」組成
如果只能以下劃線、英文字母開頭,後跟單詞字元的話:
^[A-Za-z_][A-Za-z0-9_]*$

熱點內容
跨平台編譯語言有哪些 發布:2025-03-20 19:08:25 瀏覽:779
音樂appftp安卓 發布:2025-03-20 19:03:24 瀏覽:305
家長申述驗證的密碼是什麼 發布:2025-03-20 18:55:27 瀏覽:8
編譯原理與技術第二版下載 發布:2025-03-20 18:55:26 瀏覽:937
怎麼寫編程語言 發布:2025-03-20 18:42:52 瀏覽:688
我去密碼是多少 發布:2025-03-20 18:12:28 瀏覽:541
方舟編譯器啥時候開始 發布:2025-03-20 18:11:40 瀏覽:959
常用java類 發布:2025-03-20 18:07:06 瀏覽:202
怎麼查看安卓大屏使用的什麼協議 發布:2025-03-20 18:03:07 瀏覽:705
好用的linux系統 發布:2025-03-20 17:51:15 瀏覽:649