你能帮忙理解为什么用这个文字:
@Hello没有机会@World para ver felipe@email.com
@Hello没有机会@World:
此表达式/@World(?!:)/
按预期工作,但此表达式失败/@(\w+)(?!:)/
? (至少它与预期值不匹配=> @ word excluding :
)
我认为这个/@World/
也可以转换成类似/@w+/
的东西,但事实上似乎并非如此。能帮我理解差异吗?
答案 0 :(得分:4)
GREP默认贪婪:使用+
尽可能匹配,同时仍然返回有效匹配。
你的\@(\w+)(?!:)
失败了,因为" @World:"它返回" @ Worl"。它适合你的表达:单词字符,然后不是":" - 下一个字符是d
。
请改用:
\@(\w+)\b(?!:)
这样,它没有选择但来测试整个字符串" @ World",后面跟着非单词字符 - 如果是的话,它必须不是冒号。