編譯正則怎麼寫
① 編譯原理中,a和b的個數相等的正則表達式該怎麼寫
判定a和b的個數相等不能使用正則語言,需要使用上下文無關語言,下推自動機利用堆棧記憶和處理a和b的個數之間的關系。
所以沒有能夠描述你所要求的正則表達式。
② C語言怎麼用正則表達式
1、標準的C和C++都不支持正則表達式,但有一些函數庫可以輔助C/C++程序員完成這一功能,其中最著名的當數Philip Hazel的Perl-Compatible Regular Expression庫,許多Linux發行版本都帶有這個函數庫。
2、C/C++ 中使用正則表達式一般分為三步:
1)編譯正則表達式 regcomp()
int regcomp (regex_t *compiled, const char *pattern, int cflags)
這個函數把指定的正則表達式pattern編譯成一種特定的數據格式compiled,這樣可以使匹配更有效。函數regexec 會使用這個數據在目標文本串中進行模式匹配。執行成功返回0。
2)匹配正則表達式 regexec()
int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)
當編譯好正則表達式後,就可以用regexec 匹配我們的目標文本串了,如果在編譯正則表達式的時候沒有指定cflags的參數為REG_NEWLINE,則默認情況下是忽略換行符的,也就是把整個文本串當作一個字元串處理。執行成功返回0。
3)釋放正則表達式 regfree()
void regfree (regex_t *compiled)
當使用完編譯好的正則表達式後,或者要重新編譯其他正則表達式的時候,可以用這個函數清空compiled指向的regex_t結構體的內容。請注意,如果是重新編譯的話,一定要先清空regex_t結構體。
③ 正則表達式怎麼寫
正則表達式 ^[u4e00-u9fa5]+?(?=女|,|() 取第0捕獲組的數據,注意打開多行模式匹配,逗號和小括弧都是中文的字元
我給你一個python語言的例子,你看看吧
importre
a="戴桂華女(力木通信)(航太通信)(博翼通信工程) 劉滿珍(農機廠) 向吉斌,男(物貿) 鄧會(煙廠) 何萬遠,男((電力公司) 黃文玉,女((巨凝建材公司) 何宗玲,女((客運公司) 何菊林()婦幼 王勇,男,廣電(62.11.20) 周娟,女,國資(63.10.13) "
regex="^[u4e00-u9fa5]+?(?=女|,|()"
it=re.finditer(regex,a,re.M)
formatchinit:
print(match.group())
④ 正則表達式怎麼寫
正則表達式是為了要從一大串文本中,找到自己想要的內容。
它並不能把你的這一串字元串用正則去表示。
如果您的要求是這樣描述
aid:開頭,32位字元串(包含a-z,0-9以及@),「-」,「4位字元串(包含a-z,0-9)」,"-",12位字元串(包含a-z,0-9)
那麼,正則將這樣表示
^aid:[a-z0-9@]{32}-[a-z0-9]{4}-[a-z0-9]{12}$
其中^代表字元串的開頭
aid:表示之後的字元串
[a-z0-9@]表示從小寫a到小寫z的26個字母以及0到9的數字以及@符號
{32}表示前邊的集合必須出現32次
以此類推
⑤ js正則表達式之RegExp對象之compile方法 編譯正則表達式
功能說明:該方法可以編譯指定的正則表達式,編譯之後的正則表達式執行速度將會提高,如果正則表達式多次被調用,那麼調用compile方法可以有效的提高代碼的執行速度,如果該正則表達式只能被使用一次,則不會有明顯的效果。
基本語法:objReg.compile(pattern[,flag])
objReg必選項,RegExp對象變數的名稱
pattern
必選項
正則表達式
flag
可選項
匹配選項
復制代碼
代碼如下:
<html>
<script
language="javascript"
type="text/javascript">
//要匹配的字元串
var
objStr="我的手機號13522222222,他的手機號碼13233333333她的手機號碼13988888888";
//設置正則表達式匹配以13開頭的11為手機號碼,全局匹配(這里是匹配移動手機號)
var
reg=new
RegExp("13[4-9](//d){8}","g");
//提示用戶發現移動號碼,然後列印出結果
document.write("發現移動手機號碼");
//調用函數列印匹配的結果
findPhoneNumbers(objStr.match(reg));
//重新編譯正則表達式
reg.compile("13[0-3](//d){8}","g");
document.write("發現聯通手機號碼");
findPhoneNumbers(objStr.match(reg));
//定義輸出返回結果函數
function
findPhoneNumbers(arr){
//使用循環輸出數據
for(var
i=0;i<arr.length;i++){
document.write("<li>"+arr[i]+"<br>");
}
}
</script>
</html>
使用compile方法還可以對指定的正則表達式進行修改並且重新編譯,提高了正則表達式的適應性!
⑥ 正則表達式怎麼編寫
<%
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 集合。
⑦ 如何寫正則表達式
正則表達式
是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
可以通過在一對分隔符之間放入表達式模式的各種組件來構造一個正則表達式,即/expression/
普通字元
由所有那些未顯式指定為元字元的列印和非列印字元組成。這包括所有的大寫和小寫字母字元,所有數字,所有標點符號以及一些符號。
非列印字元
字元 含義
\cx 匹配由x指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
\S 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。
\t 匹配一個製表符。等價於 \x09 和 \cI。
\v 匹配一個垂直製表符。等價於 \x0b 和 \cK。
特殊字元
所謂特殊字元,就是一些有特殊含義的字元,如上面說的"*.txt"中的*,簡單的說就是表示任何字元串的意思。如果要查找文件名中有*的文件,則需要對*進行轉義,即在其前加一個\。ls \*.txt。正則表達式有以下特殊字元。
特別字元 說明
$ 匹配輸入字元串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$。
( ) 標記一個子表達式的開始和結束位置。子表達式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。
* 匹配前面的子表達式零次或多次。要匹配 * 字元,請使用 \*。
+ 匹配前面的子表達式一次或多次。要匹配 + 字元,請使用 \+。
. 匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。
[ 標記一個中括弧表達式的開始。要匹配 [,請使用 \[。
? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字元,請使用 \?。
\ 將下一個字元標記為或特殊字元、或原義字元、或向後引用、或八進制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。
^ 匹配輸入字元串的開始位置,除非在方括弧表達式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。
{ 標記限定符表達式的開始。要匹配 {,請使用 \{。
| 指明兩項之間的一個選擇。要匹配 |,請使用 \|。
構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字元與操作符將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字元、字元集合、字元范圍、字元間的選擇或者所有這些組件的任意組合。
限定符
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有*或+或?或{n}或{n,}或{n,m}共6種。
*、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。
正則表達式的限定符有:
字元 描述
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。
定位符
用來描述字元串或單詞的邊界,^和$分別指字元串的開始與結束,\b描述單詞的前或後邊界,\B表示非單詞邊界。不能對定位符使用限定符。
選擇
用圓括弧將所有選擇項括起來,相鄰的選擇項之間用|分隔。但用圓括弧會有一個副作用,是相關的匹配會被緩存,此時可用?:放在第一個選項前來消除這種副作用。
其中?:是非捕獲元之一,還有兩個非捕獲元是?=和?!,這兩個還有更多的含義,前者為正向預查,在任何開始匹配圓括弧內的正則表達式模式的位置來匹配搜索字元串,後者為負向預查,在任何開始不匹配該正則表達式模式的位置來匹配搜索字元串。
後向引用
對一個正則表達式模式或部分模式兩邊添加圓括弧將導致相關匹配存儲到一個臨時緩沖區中,所捕獲的每個子匹配都按照在正則表達式模式中從左至右所遇到的內容存儲。存儲子匹配的緩沖區編號從 1 開始,連續編號直至最大 99 個子表達式。每個緩沖區都可以使用 '\n' 訪問,其中 n 為一個標識特定緩沖區的一位或兩位十進制數。
可以使用非捕獲元字元 '?:', '?=', or '?!' 來忽略對相關匹配的保存。
各種操作符的運算優先順序
相同優先順序的從左到右進行運算,不同優先順序的運算先高後低。各種操作符的優先順序從高到低如下:
操作符 描述
\ 轉義符
(), (?:), (?=), [] 圓括弧和方括弧
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和順序
| 「或」操作
全部符號解釋
字元 描述
\ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進制轉義符。例如,'n' 匹配字元 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。
^ 匹配輸入字元串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。
$ 匹配輸入字元串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。
? 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字元串,而默認的貪婪模式則盡可能多的匹配所搜索的字元串。例如,對於字元串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。
. 匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。
(pattern) 匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括弧字元,請使用 '\(' 或 '\)'。
(?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用 "或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'instr(?:y|ies) 就是一個比 'instry|instries' 更簡略的表達式。
(?=pattern) 正向預查,在任何匹配 pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始。
(?!pattern) 負向預查,在任何不匹配 pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始
x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
[xyz] 字元集合。匹配所包含的任意一個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字元范圍。匹配指定范圍內的任意字元。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字元。
[^a-z] 負值字元范圍。匹配任何不在指定范圍內的任意字元。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字元。
\b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由 x 指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。
\d 匹配一個數字字元。等價於 [0-9]。
\D 匹配一個非數字字元。等價於 [^0-9]。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
\S 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。
\t 匹配一個製表符。等價於 \x09 和 \cI。
\v 匹配一個垂直製表符。等價於 \x0b 和 \cK。
\w 匹配包括下劃線的任何單詞字元。等價於'[A-Za-z0-9_]'。
\W 匹配任何非單詞字元。等價於 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價於 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。.
\num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字元。
\n 標識一個八進制轉義值或一個向後引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向後引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。
\nm 標識一個八進制轉義值或一個向後引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。
\nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。
\un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字元。例如, \u00A9 匹配版權符號 (?)。
VBScript內的使用方法:
function gfCheck(obj)
dim strCheck '待檢字元串
dim objRE '正則式對象
dim strRtn '正則式判斷結果
strCheck = obj.value
set objRE = New RegExp
objRE.Pattern = "^[A-Za-z0-9]{13}$" '13位的英文字元和數字串
gfCheck = objRE.Test(strCheck) '符合正則式則返回true,反之則返回false
set objRE = nothing
end function
常用的正則式
1、非負整數:」^\d+$」
2、正整數:」^[0-9]*[1-9][0-9]*$」
3、非正整數:」^((-\d+)|(0+))$」
4、負整數:」^-[0-9]*[1-9][0-9]*$」
5、整數:」^-?\d+$」
6、非負浮點數:」^\d+(\.\d+)?$」
7、正浮點數:」^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$」
8、非正浮點數:」^((-\d+\.\d+)?)|(0+(\.0+)?))$」
9、負浮點數:」^(-((正浮點數正則式)))$」
10、英文字元串:」^[A-Za-z]+$」
11、英文大寫串:」^[A-Z]+$」
12、英文小寫串:」^[a-z]+$」
13、英文字元數字串:」^[A-Za-z0-9]+$」
14、英數字加下劃線串:」^\w+$」
15、E-mail地址:」^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$」
16、URL:」^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$」
⑧ 怎麼寫正則表達式
如果工單在其它數據中,需要兩次匹配,第一次先匹配工單,然後再匹配工單中的表格和數字
如果全是工單數據,則只要匹配一次工單中的表格和數字
我給你一個php語言的分兩次匹配的例子,你看看吧(正則表達式是兩個斜杠中間的部分,第一次匹配取第一捕獲組的數據,第二次匹配取第一和第二捕獲組的數據)
<?php
$str="該工單存在上一工單:[undo_lgc_line,10800107423122,undo_lgc_line_link,10800107423122,undo_lnk_lgc_link_component,10800107423122,undo_lnk_phy_link_component,10800107423122]必須先歸檔前面的工單後,才能歸檔當前工單,歸檔失敗";
preg_match_all('/該工單存在上一工單:[(.+?)]必須先歸檔前面的工單後,才能歸檔當前工單,歸檔失敗/',$str,$s);
for($i=0;$i<count($s[1]);$i++){
preg_match_all('/([a-z_]+),s*(10[0-9]+)/',$s[1][$i],$matches);
for($j=0;$j<count($matches[1]);$j++){
echo"table=".$matches[1][$j]."number=".$matches[2][$j]." ";
}
}
?>
⑨ 正則 怎麼寫
正則:->setInc((.*));
實例:"->setInc('against', 1);".replace(/->setInc((.*));/g,'->inc($1)->update;')
不清楚再追問
查找:->setInc((.*));
替換:->inc($1)->update;