-1

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

.*(cq|conquest).*

它返回任何单词/短语/句子/等。里面有字母“cq”或“征服”这个词。但是,从这些比赛中,我想排除所有包含“征服力量”一词的内容。

例子:

  • some conquest here应该匹配)
  • another cq with some conquest here应该匹配)
  • too much cq or conquest power is bad不应该匹配)

我怎样才能对上面的正则表达式做到这一点?它必须只有一个正则表达式,否则我正在使用的程序(Advanced Combat Tracker)将创建两个不同的选项卡。

4

2 回答 2

1

如果要匹配包含"conquest"or"cq"的任何字符串,但如果字符串包含 则不匹配"conquest power",则正则表达式为

^(?!.*conquest power).*?(?:cq|conquest).*

上面将尝试从字符串的开头匹配到行尾,如果您想从每行的开头匹配,如果可用,请打开多行模式 - 添加(?m)到正则表达式的开头可能会这样做。

如果要跨换行符进行匹配,请更改.[\s\S],或打开singleline模式(如果有)。

您通过说“我想匹配'cq'或'conquest'”以及“我希望正则表达式提取那条线”让人们感到困惑。

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

于 2013-03-09T10:39:51.440 回答
0

从您最初的问题中,我得到您想要匹配所有包含“cq”或“conquest”但不包含“power”的字符串。对于这种情况,以下正则表达式有效:

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

正则表达式

于 2013-03-09T00:01:17.380 回答