Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 了解正则表达式前瞻(?!|?=)_Regex - Fatal编程技术网

Regex 了解正则表达式前瞻(?!|?=)

Regex 了解正则表达式前瞻(?!|?=),regex,Regex,请您帮助理解为什么使用此文本: @你好,没有tuve chance@World para verfelipe@email.com @你好,没有tuve chance@World: 这个表达式/@World?!:/按预期工作,但此项失败/@\w+?!:/?至少它与预期值=>@word不匹配,不包括: 我原以为这个/@World/也可以转换成这样的/@w+/但“展望”似乎不是这样。你能帮我理解其中的区别吗?默认情况下,GREP是贪婪的:使用+it匹配尽可能多,同时仍然返回有效匹配 您的\@\w+?!

请您帮助理解为什么使用此文本:

@你好,没有tuve chance@World para verfelipe@email.com @你好,没有tuve chance@World:

这个表达式/@World?!:/按预期工作,但此项失败/@\w+?!:/?至少它与预期值=>@word不匹配,不包括:

我原以为这个/@World/也可以转换成这样的/@w+/但“展望”似乎不是这样。你能帮我理解其中的区别吗?

默认情况下,GREP是贪婪的:使用+it匹配尽可能多,同时仍然返回有效匹配

您的\@\w+?!:失败是因为@World:返回@Worl。它符合您的表达方式:单词字符,然后不是a:-下一个字符是d

改用这个:

\@(\w+)\b(?!:)
这样,它就别无选择,只能测试整个字符串@World,后跟一个非单词字符,如果是,它就不能是冒号。

GREP默认情况下是贪婪的:使用+它尽可能匹配,同时仍然返回有效匹配

您的\@\w+?!:失败是因为@World:返回@Worl。它符合您的表达方式:单词字符,然后不是a:-下一个字符是d

改用这个:

\@(\w+)\b(?!:)

这样,它就别无选择,只能测试整个字符串@World,后跟一个非单词字符,如果是,它就不能是冒号。

您使用的是什么语言?仅供参考,您不需要转义@,它在regexp.javascript中没有特殊意义,但我在这里尝试了不同的选项,结果都是一样的第二个regexp匹配@Hellothanks Barmar我更新了scape字符。。关于匹配@hello这是正则表达式的一部分原因在我目前的情况下你用什么语言工作?仅供参考,你不需要逃避@,它在regexp.javascript中没有特殊意义,但我在这里尝试了不同的选项,结果都是一样的第二个regexp匹配@Hellothanks Barmar我更新了scape字符。。关于匹配@hello,这是我当前情况下正则表达式的一部分原因。您缺少+。谢谢,这很好。。。顺便说一句,你上一次的表达中漏掉了一个+符号,除了这可以解释为什么它是竖起的。在iPad上打字很难:你错过了+。谢谢,这很好。。。顺便说一句,你上一次的表达中漏掉了一个+符号,除了这可以解释为什么它是竖起的。在iPad上打字很难: