您可以使用 Negative LookBehind。你几乎在那里,但使用 LookAheads。
正则表达式:(?<!asp|vb|c\#)\.[a-zA-Z]{2,6}\b
替换为空
在这里解释演示:http ://regex101.com/r/tG5rO1
要解决可变长度 RegEx 错误,请使用以下命令:(?<!asp)(?<!vb|c\#)\.[a-z]{2,6}\b
编辑:为不同长度的排除单词单独的 LookBehind 组
这只会找到与您的条件不匹配的 TLD。
更新:
处理特殊情况:不匹配以排除单词结尾的单词并匹配排除单词的任何组合(例如。vB
VB
vb
Vb
)
RegExp:\b(?<!\b[aA][sS][pP])(?<!\b[vV][bB]|\b[cC]\#)\.[a-zA-Z]{2,6}\b
解释演示:http ://regex101.com/r/bR3kJ8
或:\b(?<!\basp)(?<!\bvb|\bc\#)\.[a-z]{2,6}\b
与case insensitive
RegEx 修饰符i一起使用时
更新#2
更安全,因为它只关心.net
TLD 并为其排除了单词:
/(^|\s)(?!(?:visual)?(?:basic|studio|asp|v[bs]|c\#)\.net)(\w+)(?:\.com?\.[a-z]{2}|\.[a-z]{2,6})\b/\1\2/gi
与以前的变体相比,需要更换。
解释演示:http ://regex101.com/r/kL5mQ5