正则表达式-仅在中间部分与某些字符串不匹配时匹配

拉法格(RafałG.

标题听起来可能有点复杂,所以让我显示一个简化的示例。我有一个像这样的测试字符串:

A ... 
aaa 
... Z

A ... 
bbb 
... Z

A ... 
ccc 
... Z

A ... 
cxc 
... Z

A ... 
ccc 
... Z

A ... 
cxc 
... Z

如果我想匹配所有可用区,则很简单:

(?s)A.*?Z

如果我想匹配中间所有不带“ c”的AZ部分,那也很容易:

(?s)A[^c]*?Z

但是我实际上想要做的是匹配所有AZ部分,中间没有“ ccc”。我尝试了前瞻性断言:

(?s)A(?!.*ccc).*?Z

但这仅与最后一个AZ部分匹配,因为实际上所有其他AZ部分后面都带有“ ccc”。

那么,可以以某种方式并在单个正则表达式中完成此操作吗?不幸的是,第一步仅匹配所有AZ部分,而第二步则删除带有“ ccc”的部分。

您可能会怀疑这是一个HTML解析问题,但我对其进行了简化以分离出该问题。

阿马尔·穆拉利(Amal Murali)

您的正则表达式需要进行一些修改:

(?s)A(?:(?!ccc).)*?Z

(?!ccc)是一个否定的前瞻,断言A之后没有ccc.先行后做的所有匹配。它一次使文本前进一个字符,并确保每个位置后都不跟一个ccc

Regex101演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式-仅在中间部分与某些字符串不匹配时匹配

来自分类Dev

正则表达式不匹配字符串

来自分类Dev

正则表达式与字符串不匹配

来自分类Dev

字符串与正则表达式不匹配

来自分类Dev

正则表达式与字符串不匹配

来自分类Dev

仅在句子中间时匹配的正则表达式

来自分类Dev

正则表达式提取与R中某些单词匹配的部分字符串

来自分类Dev

正则表达式提取匹配R中某些单词的部分字符串

来自分类Dev

正则表达式与某些字符不匹配

来自分类Dev

仅在字符串完全匹配时如何取消正则表达式

来自分类Dev

仅在字符串完全匹配时如何取消正则表达式

来自分类Dev

替换与正则表达式不匹配的字符串部分

来自分类Dev

正则表达式不匹配字符串的一部分

来自分类Dev

如何使用正则表达式提取字符串的不匹配部分

来自分类Dev

正则表达式部分不匹配字符串

来自分类Dev

仅在正则表达式完全匹配时如何匹配正则表达式

来自分类Dev

匹配正则表达式时排除某些字符

来自分类Dev

表达式不匹配正则表达式

来自分类Dev

部分正则表达式匹配

来自分类Dev

正则表达式的部分匹配

来自分类Dev

部分匹配正则表达式

来自分类Dev

正则表达式或不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式后跟字符时不匹配