Regex 如何排除正则表达式中的某个单词?

Regex 如何排除正则表达式中的某个单词?,regex,word,Regex,Word,我正在使用这个表达式,它非常适合我的需要: .*(cq|conquest).* 它返回任何带有字母“cq”或“conquest”的单词/短语/句子/等。然而,从这些比赛中,我想排除所有包含“征服力量”一词的比赛 示例: 这里有些征服(应该匹配) 另一个cq在这里有一些征服力(应该匹配) 过多的cq或征服能力不好(不应匹配) 如何对上面的正则表达式执行该操作?它必须只有一个正则表达式,否则我正在使用的程序(高级战斗跟踪器)将创建两个不同的选项卡。从您的列表中,我知道您希望匹配所有包含“cq”

我正在使用这个表达式,它非常适合我的需要:

.*(cq|conquest).*
它返回任何带有字母“cq”或“conquest”的单词/短语/句子/等。然而,从这些比赛中,我想排除所有包含“征服力量”一词的比赛

示例:

  • 这里有些征服
    (应该匹配)
  • 另一个cq在这里有一些征服力
    (应该匹配)
  • 过多的cq或征服能力不好
    (不应匹配)
如何对上面的正则表达式执行该操作?它必须只有一个正则表达式,否则我正在使用的程序(高级战斗跟踪器)将创建两个不同的选项卡。

从您的列表中,我知道您希望匹配所有包含“cq”或“conquest”但不包含“power”的字符串。对于这种情况,以下regexp有效:

^([^p]|p(?!ower))*(cq|conquest)([^p]|p(?!ower))*$

()

如果您想要匹配任何包含
“征服”
“cq”
的字符串,但如果字符串包含
“征服力量”
,则正则表达式为

^(?!.*conquest power).*?(?:cq|conquest).*
以上内容将尝试从字符串的开头到行尾进行匹配,如果您想从每行的开头进行匹配,请打开多行模式(如果可用)-将
(?m)
添加到正则表达式的开头可以做到这一点

如果要跨换行符进行匹配,请将
更改为
[\s\s]
,或打开
单线
模式(如果可用)


你说“我想匹配‘cq’或‘征服’”,但同时又说“我想让正则表达式提取这一行”,这让人们感到困惑


我假设你真的不想只匹配“cq”或“征服”,你想匹配包含“cq”或“征服”的字符串/行(?)。

可能
(?!*power)。*(cq |征服)。*
请更具体地说明你想排除什么,不想排除什么。你说你想排除“权力”一词,并给出一个例子(“征服权力”),但你说你只想排除确切的“征服权力”一词。我想匹配“cq”或“征服”,但如果短语是“征服权力”,那么我不想用我正在使用的程序(ACT)来提取行。@EdgeTrio是的,我的答案中的regexp就是这样做的。请尝试使用regexpal url来演示一些示例。@raypixar可以,但该regex不满足字符串必须包含“cq”或“conquest”的要求。