hgxfg9

人生若只如初见,何事秋风悲画扇。

0%


title: 如何在正则表达式中排除某个单词?
date: 2022-10-20 11:03:30
tags:

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

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

1
.*(cq\|conquest).*

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

例子:

1
2
3
- some conquest here(应该匹配)
- another cq with some conquest here(应该匹配)
- too much cq or conquest power is bad(不应该匹配)

我怎么能对上面的正则表达式做到这一点? 它必须只有一个正则表达式,否则我正在使用的程序(高级战斗追踪器)将创建两个不同的选项卡。

如果要匹配任何包含”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))*$
-------- 本文结束 感谢阅读 --------
你的鼓励是我更新的动力!