这里有两种常见的情况:1)A
和B
是不同的单个字符串,2)A
和B
是不同的多字符字符串。
场景1
您可以使用否定的字符类:
(?:\G(?!^)|A)[^AB]*?\Kc(?=[^AB]*B)
请参阅此正则表达式演示。细节:
(?:\G(?!^)|A)
-A
或上一次成功的比赛结束[^AB]*?
-除A
和以外的任何零个或多个字符B
,请尽可能少\K
-match reset运算符,该运算符将丢弃迄今为止在整体内存匹配缓冲区中所有匹配的文本c
-c
字符/字符串(?=[^AB]*B)
-必须紧随其后的是零个或多个字符(而不是A
和)B
,然后B
紧随当前位置右侧的char。方案2
如果A
和B
是多字符字符串的占位符,例如ABC
和BCE
,c
则使用某种模式c\d+
(匹配c
并在其后加上一个或多个数字)
(?s)(?:\G(?!^)|ABC)(?:(?!ABC).)*?\Kc\d+(?=.*?BCE)
请参阅此正则表达式演示。细节:
(?s)
-DOTALL修饰符,使正则表达式引擎与匹配任何字符 .
(?:\G(?!^)|ABC)
-ABC
或上一次成功的比赛结束(?:(?!ABC).)*?
-0次或多次的任何不启动ABC
字符序列的字符\K
-匹配重置运算符c\d+
-c
和一个或多个数字(?=.*?BCE)
-尽可能少的零个或多个字符,后跟BCE
。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句