2012-07-27 80 views
1

什麼(?=。* [^ A-ZA-Z])平均什麼呢(?=。* [^ A-ZA-Z])的意思

我在正則表達式一個初學者,沒有得到這是什麼意思 。

難道就是這樣,點(。)表示任何字符,所以.*表示任何字符的任意次數,[^a-zA-z]除了a-z和A-Z以外的任何一個字符。 什麼字符串會匹配它?

感謝,

普尼特

+1

當你不理解像這樣的正則表達式時,請轉到http://gskinner.com/RegExr/之類的在線工具,粘貼你的註冊表項,然後將鼠標懸停在註冊表項的每個部分上工具提示解釋它的功能。 – 2012-07-27 08:58:54

+0

另請參閱:http://stackoverflow.com/questions/2491930/is-there-an-online-regexbuddy-like-regular-expression-analyzer – 2012-07-27 08:59:31

+0

我發誓與[正則表達式教練](http: //www.weitz.de/regex-coach/)來處理這類事情。還有一些替代品,包括一些基於網絡的。正則表達式教練(除其他外)給出了正則表達式的描述;這裏表示這是一個「零寬度積極的預測斷言」,然後你可以使用它來找到[Regular-Expressions.info](http://www.regular-expressions.info/)上的含義。 – 2012-07-27 09:01:36

回答

6

這是積極的前瞻主張。

這意味着至少有一個符號不是從a-ZA-Z開始。

實施例:

$ echo 12abc | grep -P '2(?=.*[^a-zA-Z])' 
$ echo 12abc. | grep -P '2(?=.*[^a-zA-Z])' 
12abc. 

在第一行有2後無not a-zA-Z。線路將不會顯示。

在第二行中,我添加了指向結尾的內容。現在2之後有not a-zA-Z。線路將被找到並顯示。