正则表达式:如何匹配不以前缀列表开头的子字符串

Posted

技术标签:

【中文标题】正则表达式:如何匹配不以前缀列表开头的子字符串【英文标题】:Regex: How to match substrings not starting with a list of prefixes 【发布时间】:2019-09-27 15:39:30 【问题描述】:

我需要替换字符串中匹配的单词,但不包括这些单词的前缀列表。

The matchingWord should be replaced in the first line
But excludePrefix1.matchingWord , not in this line
Neither in this other line excludePrefix2.matchingWord
But again in this allowedPrefix.matchingWord

我成功地使用了一个带有单个前缀的正则表达式:

(?<!(excludePrefix1\.))matchingWord

但是如何使用几个排除的前缀来做到这一点?

我尝试过类似的东西:

(?<!((excludePrefix1\.)(excludePrefix2\.)))matchingWord

但这不起作用,请一位正则表达式专家帮助我们解决这个棘手的问题?

【问题讨论】:

【参考方案1】:

在几个工具中,负后视必须是固定长度,对于您的问题,请使用多个后视:

(?<!excludePrefix1\.)(?<!excludePrefix2\.)matchingWord

【讨论】:

以上是关于正则表达式:如何匹配不以前缀列表开头的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配空间不以 char 开头/结尾

正则表达式

正则表达式中以啥开头啥结尾怎么写

正则表达式 - 以特定字符串开头但不以另一个子字符串结尾

无法让 Swift 中的正则表达式匹配“不包含”

正则表达式匹配不是特定子字符串的内容