正则表达式来匹配EOF
我有一些看起来像这样的数据
john, dave, chris
rick, sam, bob
joe, milt, paul
我使用这个正则表达式来匹配名称
/(w.+?)(rn|n|,)/
它适用于大部分,但最后一个字,意思是最后的值并没有结束之后的文件突然结束rn
, n
或者,
它EOF结束。 有没有办法在正则表达式中匹配EOF,所以我可以把它放在第二个分组中?
这个问题的答案是Z
让我花了一段时间来弄明白,但现在它工作。 请注意,相反, A
匹配整个字符串的开头(与^
和$
匹配一行的开头)。
EOF实际上不是一个角色。 如果您有多行字符串,则'$'将匹配字符串的末尾以及行的末尾。
在Perl及其同类中, A
和Z
匹配字符串的开头和结尾,完全忽略换行符。
对于POSIX正则表达式的GNU扩展使用`
和'
来表示相同的事情。
对比Ryan建议的 Z与 z的行为:
$ perl -we 'my $corpus = "hellon"; $corpus =~ s/Z/world/g; print(":$corpus:n")' :helloworld world: $ perl -we 'my $corpus = "hellon"; $corpus =~ s/z/world/g; print(":$corpus:n")' :hello world: $
perlre sez:
Z Match only at end of string, or before newline at the end z Match only at end of string
将测试用例翻译成Ruby(1.8.7,1.9.2)的行为是相同的。
链接地址: http://www.djcxy.com/p/77065.html上一篇: regex to match EOF
下一篇: Delete specific line number(s) from a text file using sed?