2013-05-22 34 views
0

一些能解釋的發動機,當它試圖匹配如何正則表達式引擎解析錨

^4$ to 749\n486\n4 

我的意思是^4$手段引擎解析如何正則表達式的字符串,而進行比賽

+1

看看http://stackoverflow.com/questions/525004/short-example-of-regular-expression-converted-to-a-state-machine –

回答

0

的正則表達式匹配怎麼行正則表達式的工作,只有包含一個數字4

如果將此正則表達式應用於包含換行符的字符串,則它會將字符串的第一個字符視爲行的開始,並將第一個換行符視爲行的結尾。換行符之後的其他字符被有效忽略。在Perl

DB<1> $str="749\n486\n4"; 
    DB<2> x $str =~ /^4$/ 
    empty array 

示例實施例在python

>>> import re 
>>> s="749\n486\n4" 
>>> re.search('^4$',s) 

但是,正則表達式實現具有處理此的一種方式。有一個多行設置。在Perl

DB<3> x $str =~ /^4$/m 
0 1 

在蟒

>>> re.search('^4$',s,re.MULTILINE) 
<_sre.SRE_Match object at 0x7f446874b030> 

Python文檔解釋多行模式這樣

re.MULTILINE 在指定時,圖案字符 '^' 的開始處相匹配字符串和 每行的開頭(緊接在 之後的每個換行符);並且模式字符'$'匹配 字符串的末尾和每行末尾(緊接在每個 換行符之前)。默認情況下,'^'只在字符串的開始處匹配, 和'$'僅在字符串的末尾匹配,緊接在字符串末尾的 換行符(如果有的話)之前。

如果你多串你其實是想知道,如果它在一個數字4結束在一行再有就是這個

DB<4> x $str =~ /^4\z/m 
0 1 

語法功能見http://perldoc.perl.org/perlre.html特別是在米旗和\ a,\ z,\ Z 或http://docs.python.org/2/library/re.html#regular-expression-objects