Perl Regex匹配@ character之后的所有内容

时间:2012-09-29 06:25:33

标签: regex perl

我有一堆文本文件,其中包含@符号引用的标记。对于例如如果注释包含@home,则会将注释标记为“主页”。

我正在尝试找到一个Perl Regex,它将匹配@字符之后的所有字符,但不包括@character。

到目前为止,我有(@\w+)成功匹配整个标记(.eg匹配@home@work等)但是我找不到修改它的方法,所以只有@字符被拾取后的字符。

我看了一下perl regex to match all words following a character,但我似乎无法解决这个问题。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:4)

正如@Quentin所说,@(\w+)是最佳解决方案。

#!/usr/bin/perl

while (<>) {
    while (/@(\w+)/g) {
        print $1, "\n";
    }
}

如果您想要完全匹配标记,可以尝试使用(?<=@)\w+。它匹配@之后的所有字符,但排除了@

#!/usr/bin/perl

while (<>) {
    while (/(?<=@)\w+/g) {
        print $&, "\n";
    }
}

参考:Using Look-ahead and Look-behind

答案 1 :(得分:2)

只需移动@,使其位于捕获组之外:

@(\w+)