title: 如何在正则表达式中排除某个单词?
date: 2022-10-20 11:03:30
tags:
如何在正则表达式中排除某个单词?
我正在使用这个表达式,它非常适合我需要的东西:
1 | .*(cq\|conquest).* |
它返回任何单词/短语/句子/等。 字母’cq’或’conquest’字样。 但是,从这些比赛中我想排除所有包含”征服力量”一词的内容。
例子:
1 | - some conquest here(应该匹配) |
我怎么能对上面的正则表达式做到这一点? 它必须只有一个正则表达式,否则我正在使用的程序(高级战斗追踪器)将创建两个不同的选项卡。
如果要匹配任何包含”conquest”或”cq”的字符串,但是如果字符串包含”conquest power”则不匹配,那么正则表达式是
1 | ^(?!.*conquest poer).*?(?:cq\|conquest).* |
以上将尝试匹配从字符串的开头到行的结尾,如果要从每行的开头匹配,请在多行模式下切换(如果可用) - 将(?m)添加到正则表达式的开头可能会 那。
如果要匹配换行符,请将.更改为[\s\S],或者如果可用,则打开singleline模式。
你通过声明”我想匹配’cq’或’征服’”而且”我希望正则表达式提取该行”让人困惑。
我假设你真的不想只匹配”cq”或”conquest”,你想匹配包含”cq”或”conquest”的字符串/行(?)。
从你原来的问题我得到你想要匹配所有包含”cq”或”conquest”但不包含”power”的字符串。 对于这种情况,以下正则表达式有效:
1 | ^([^p]|p(?!ower))*(cq|conquest)([^p]|p(?!ower))*$ |