正则表达式来匹配EOF

我有一些看起来像这样的数据

john, dave, chris
rick, sam, bob
joe, milt, paul

我使用这个正则表达式来匹配名称

/(w.+?)(rn|n|,)/

它适用于大部分,但最后一个字,意思是最后的值并没有结束之后的文件突然结束rnn或者,它EOF结束。 有没有办法在正则表达式中匹配EOF,所以我可以把它放在第二个分组中?


这个问题的答案是Z让我花了一段时间来弄明白,但现在它工作。 请注意,相反, A匹配整个字符串的开头(与^$匹配一行的开头)。


EOF实际上不是一个角色。 如果您有多行字符串,则'$'将匹配字符串的末尾以及行的末尾。

在Perl及其同类中, AZ匹配字符串的开头和结尾,完全忽略换行符。

对于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?