捕獲:
1:(?exp) : 匹配exp,然後將捕獲的內容放到命名為name的組裡
2:(?:exp) : 匹配exp,但是不捕獲匹配的內容到組裡
位置指定(零寬斷言):
3:(?=exp) : 匹配exp前面的位置
4:(?<=exp) : 匹配exp後面的位置
5:(?!exp) : 匹配後面不是跟的exp的位置
6:(?位置
示例:1:exp為hello world , i am the strongest man in the world.,正則為(?world)
結果:
2: exp為hello world , i am the strongest man in the world.,正則為(?:world)\1
結果:\1 this token references a non-existent or invalid subpattern。因為設定為world為非捕獲組那麼\1就是不存在的
3: exp為hello world , i am the strongest man in the world.,要求匹配到每個world裡面的wo這兩個字元,正則為\b\w+(?=rld)
結果:
4: exp:
abcde158-289w63012_12
abcde158-28963012
akcde158-28963012_1
nbcde158-28963012,
要求:只匹配以abcde開頭的後面的數字,其中不能包括_及其後面的數字
結果:
5: exp:
abcde158-289w63012_12
abcde158-28963012
akcde158-28963012_1
nbcde158-28963012,
要求:只匹配三個數字,且三個數字後面不能是數字
正則:\d(?!\d)
結果:
6: exp:
abcde158-289w63012_12
abcde158-28963012
akcde158-28963012_1
nbcde158-28963012,
要求:找出匹配前面不是158的位置
正則:(?結果:
看了這以上幾個例子,其實應該還算比較模糊,那麼接下來將會談到更多的零寬斷言
正規表示式 分組與捕獲
之前使用正規表示式的時候大多數狀況下只是用用匹配表示式,為什麼說是匹配表示式呢,因為其實替換文字也可以使用表示式,我稱之為替換表示式。因為通常使用正規表示式的大多會是以下情況,比如把一段文字中的a字串更改為b字串 待匹配文字 abcdabcd 匹配表示式 b 替換文字 e 替換結果 aecdaecd...
正規表示式 分組與捕獲
之前使用正規表示式的時候大多數狀況下只是用用匹配表示式,為什麼說是匹配表示式呢,因為其實替換文字也可以使用表示式,我稱之為替換表示式。因為通常使用正規表示式的大多會是以下情況,比如把一段文字中的a字串更改為b字串 待匹配文字 abcdabcd 匹配表示式 b 替換文字 e 替換結果 aecdaecd...
正規表示式 分組與捕獲
之前使用正規表示式的時候大多數狀況下只是用用匹配表示式,為什麼說是匹配表示式呢,因為其實替換文字也可以使用表示式,我稱之為替換表示式。因為通常使用正規表示式的大多會是以下情況,比如把一段文字中的a字串更改為b字串 待匹配文字 abcdabcd 匹配表示式 b 替換文字 e 替換結果 aecdaecd...