Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,搜索不后跟@符号的单词字符串的正则表达式是什么 例如: mywordLLD OK myword.dff OK myword@ld Exclude (?!@)负数将使单词匹配,前提是@没有在单词之后立即出现: word(?!@) 如果在单词后面的右边某处有一个字符/字符串,则需要使匹配失败,可以使用以下三种方法中的任意一种 word(?!.*@) # Note this will require @ to be on the same

搜索不后跟
@
符号的
单词
字符串的正则表达式是什么

例如:

mywordLLD         OK
myword.dff        OK
myword@ld         Exclude
(?!@)
负数将使
单词
匹配,前提是
@
没有在
单词
之后立即出现:

word(?!@)
如果在
单词
后面的右边某处有一个字符/字符串,则需要使匹配失败,可以使用以下三种方法中的任意一种

word(?!.*@)       # Note this will require @ to be on the same line as word
(?s)word(?!.*@)   # (except Ruby, where you need (?m)): This will check for @ anywhere...
word(?![\s\S]*@)  # ... after word even if it is on the next line(s)

此正则表达式匹配
word
子字符串,并且
(?!@)
确保紧跟其后没有
@
,如果有,则不会将
word
作为匹配返回(即匹配失败)

发件人:

如果要匹配某个内容,而不是后跟其他内容,则必须进行消极的前瞻。在解释时,本教程解释了为什么不能使用求反字符类来匹配
q
后面不跟
u
的字符。负前瞻提供了解决方案:
q(?!u)
。负先行结构是一对括号,左括号后跟问号和感叹号

第页:

重要的是要记住,被否定的字符类仍然必须与字符匹配
q[^u]
并不意味着:“a
q
后面不跟a
u
”。它的意思是:“一个
q
后跟一个非
u
字符。”。它与字符串
Iraq
中的
q
不匹配。它与伊拉克的
q
匹配,并且
q
后面的空格是一个国家。事实上:空格成为整体匹配的一部分,因为在上面的regexp中,正是“不是
u
”的字符被否定的字符类匹配。如果希望正则表达式与两个字符串中的
q
匹配,并且仅与
q
匹配,则需要使用负前瞻:
q(?!u)


word[^@]
?它涵盖了所有的例子;它不包括以
word
结尾的行;为此,您需要使用
word($|[^@])
。@JonathanLeffler您在这里已经有足够长的时间了,可以将答案作为答案而不是评论发布。:)无论如何,这也包括匹配中的下一个字符,因此,例如
s/word[^@]/otherword/g
将不会产生与斯特里比雪夫使用前瞻的回答相同的效果。@hvd then
word@(*SKIP)(*F)word
@AvinashRaj,它看起来不错,尽管比lookaheads支持的范围稍小。不过,请再次将答案作为答案而不是评论发布。我多次看到此类问题。。。一个答案就足够了。对于R用户,请确保将
perl=TRUE
添加到您的命令中,如
gsub(“word(?)@)”,“”,obj,perl=TRUE)
。否则它将抛出错误“Invalid regexp”。@msbernds您救了我的命@xwhitelight您只是没有看到正确的位置,请参见。在POSIX正则表达式风格中,lookahead根本不受支持,因此除非使用
-P
选项,否则不能在
sed
awk
中使用
(?!…)
(?=…)
。RE2也不支持lookaheads(因此,Go、Google Docs/Sheets REGEX*函数会受到影响)。Oracle正则表达式也不支持lookaheads。@WiktorStribiżew感谢您提供的信息