我有一堆文本文件,其中包含@
符号引用的标记。对于例如如果注释包含@home
,则会将注释标记为“主页”。
我正在尝试找到一个Perl Regex,它将匹配@
字符之后的所有字符,但不包括@character。
到目前为止,我有(@\w+)
成功匹配整个标记(.eg匹配@home
,@work
等)但是我找不到修改它的方法,所以只有@字符被拾取后的字符。
我看了一下perl regex to match all words following a character,但我似乎无法解决这个问题。
任何帮助都会很棒。
答案 0 :(得分:4)
正如@Quentin所说,@(\w+)
是最佳解决方案。
#!/usr/bin/perl
while (<>) {
while (/@(\w+)/g) {
print $1, "\n";
}
}
如果您想要完全匹配标记,可以尝试使用(?<=@)\w+
。它匹配@
之后的所有字符,但排除了@
。
#!/usr/bin/perl
while (<>) {
while (/(?<=@)\w+/g) {
print $&, "\n";
}
}
答案 1 :(得分:2)
只需移动@
,使其位于捕获组之外:
@(\w+)