我回来了一个正则表达式的问题 - 我需要测试一个字符串,用于模式的出现 - 它可以隐藏在字符串的某个地方 - 正面,正面但前面有一个空白,介于两者之间或者位于结束,也许最后是空白。
我认为这个正则表达式可能有效 - 但它没有做到这一点:
/ ?[^a-z\-\+]hit[^a-z\-\+]/
因为它只显示第一个命中,当它前面有一个空白 - 因为我用问号标记了第一部分 - 我认为第一个字符也可能被省略 - 请再次让我回到轨道上告诉我在哪里我我错了......
我在这里做了一个小提琴:http://regexr.com/38lcq(编辑:我刚尝试了“Niet the Dark Absol”的正则表达式 - 更好但仍然提供了比我想要的更多的匹配......)
答案 0 :(得分:5)
它不起作用,因为您的[^a-z\-+]
要求角色位于“目标”hit
之前。
尝试:/\bhit\b/
- 使用\b
表示字边界。
你也可以更具体:
/(?<![a-z0-9+-])hit(?![a-z0-9+-])/i
这使用负面的lookbehind和lookahead来排除你不想要的东西。