正则表达式需要前面的东西,但不包括匹配中的内容

时间:2010-01-28 01:03:57

标签: regex

我想要一个在遇到“整数xyz”时会生成匹配但正只返回'xyz'作为匹配文本的正则表达式。 'xyz'可以是标识符(字母+数字+下划线)。

xyz本身不产生匹配,只有xyz前面带有'integer'

谢谢!

5 个答案:

答案 0 :(得分:1)

那是不可能的。如果你想让它在“整数xyz”中匹配xyz而不是“just xyz”,那么你真的在寻找“整数xyz”的匹配。

您可能需要做的是期望匹配将是“整数xyz”,然后清理匹配以提取“xyz”部分。

答案 1 :(得分:1)

这取决于您使用的编程语言。你需要一个带有组的正则表达式,第二个大括号()包含变量名。

integer\s+([^,;\s]+)

答案 2 :(得分:1)

用什么语言?在Perl 5.10或PHP 5中,我使用\K

/integer \K\w+/

对于大多数其他语言,我建议使用lookbehind:

(?<=integer )\w+

如果是JavaScript,我建议成为Steve Levithan's blog的读者。想想看,我建议无论如何。 : - )

当然,假设正则表达式必须只匹配变量名。否则,我会按照其他响应者的建议使用捕获组。

答案 3 :(得分:0)

/integer\s+([a-zA-Z0-9_]+)/

然后得到反向引用\ 1

答案 4 :(得分:0)

我错过了什么,或者你不会把xyz放在括号中,其中xyz是你关心的(在你的情况下看起来像[a-zA-Z0-9 _] +)?

所以 整数([a-zA-Z0-9 _] +)

然后根据您的语言

引用括号中的$ 1或等价物