我正在使用这个表达式,它非常适合我需要的东西:
.*(cq|conquest).*
它返回任何单词/短语/句子/等。字母'cq'或'conquest'字样。但是,从这些比赛中我想排除所有包含“征服力量”一词的内容。
示例:
some conquest here
(应该匹配)another cq with some conquest here
(应该匹配)too much cq or conquest power is bad
(不应匹配)我怎样才能对上面的正则表达式做到这一点?它必须只有一个正则表达式,否则我正在使用的程序(高级战斗追踪器)将创建两个不同的选项卡。
答案 0 :(得分:1)
如果要匹配包含"conquest"
或"cq"
的任何字符串,但如果字符串包含"conquest power"
则不匹配,那么正则表达式
^(?!.*conquest power).*?(?:cq|conquest).*
以上将尝试匹配从字符串的开头到行的结尾,如果要从每行的开头匹配,请在多行模式下切换(如果可用) - 将(?m)
添加到开头正则表达式可能会这样做。
如果您希望匹配换行符,请将.
更改为[\s\S]
,或者如果可用,请启用singleline
模式。
你通过陈述“我想匹配'cq'或'征服'”来混淆人们,但“我希望正则表达式提取该行”。
我假设你真的不想只匹配“cq”或“conquest”,你想匹配包含“cq”或“conquest”的字符串/行(?)。
答案 1 :(得分:0)
从original question我得到你想要匹配包含“cq”或“conquest”但不包含“power”的所有字符串。对于这种情况,以下正则表达式有效:
^([^p]|p(?!ower))*(cq|conquest)([^p]|p(?!ower))*$
(regexpal)