需要一個模式來匹配它不應該是一個字符串 -正則表達式UNMATCH在VB.NET或C#
777777777
888888888
999999999
或00
或02
或04
啓動。
當我試圖去創造一個模式來匹配上述要求,我得到它所做 -
Dim _pattern6 As String = "^(7+|8+|9+|(00|07|08|09|17|18|19|28|29|43|48|69|70|78|79|80|96|97).*)$"
無法得到的不匹配部分完成。
需要一個模式來匹配它不應該是一個字符串 -正則表達式UNMATCH在VB.NET或C#
777777777
888888888
999999999
或00
或02
或04
啓動。
當我試圖去創造一個模式來匹配上述要求,我得到它所做 -
Dim _pattern6 As String = "^(7+|8+|9+|(00|07|08|09|17|18|19|28|29|43|48|69|70|78|79|80|96|97).*)$"
無法得到的不匹配部分完成。
您可以嘗試匹配不需要的部分。如果該結果爲真,則知道「不匹配」的嘗試將是錯誤的,反之亦然。
你想要的是negative lookahead。
@"^(?!([789])\1{8}$|0[024]).*$"
負先行(?!...)
意思是「任何遵循此位置不能匹配任何這些模式」。所以(?!7{9}).*
的意思是「任何字符串(.*
),它不是以連續九個7
s開頭。」 ([789])\1{8}$
是9位重複數字的簡寫。它的意思是「7,8或9,其次是8次」。
測試在RegexPlanet:http://fiddle.re/tz8p
在這裏你去
[^(7{9}|8{9}|9{9}|00|02|04)]+
這不是負面的字符類的工作方式。如果您沒有收到運行時錯誤,我很確定這將會查找組中特殊字符的文字版本。 – 2011-03-07 22:35:06
這簡化到'[^ 024789] +'ie「除了這些數字之外的任何東西」 – 2011-03-08 05:27:43
@賈斯汀的權利; '[^(7 {9} | 8 {9} | 9 {9} | 00 | 02 | 04)]'相當於'[^ 024789(){} |]',匹配** ** **字符,只要它不在列表中。 – 2011-03-08 05:34:21
我從來沒有試圖把兩個'$'的在正則表達式的結束,它的工作原理? (儘管我認爲你只是第一次看它而不是匹配它)。所以,先生+1。 – 2011-03-08 05:29:52
@jb - 更正:第一個'$'只是說隨便什麼都不是同一個數字[7-9]中的9和行尾。只要結果仍然合理,'$'在正則表達式中的任何地方都是有效的,所以'(^ foo $ |^bar $ |^baz $)'可以正常工作,而'foo $ bar $'則不會。感謝+1。 :) – 2011-03-08 05:55:06