Regex 正则表达式查询:任何包含中心术语的列表
为难看的问题标题道歉:我真的不知道如何简明扼要地表达这一点,如果以前有人问过,我道歉:我找不到任何参考资料 因此,我想创建一个regex查询,由三部分组成:Regex 正则表达式查询:任何包含中心术语的列表,regex,Regex,为难看的问题标题道歉:我真的不知道如何简明扼要地表达这一点,如果以前有人问过,我道歉:我找不到任何参考资料 因此,我想创建一个regex查询,由三部分组成: 1) [ABCD] 2) (CD)+|(DC)+ 3) [BADC] 问题是,此查询当然会匹配开头和结尾的任何ABCD。我想要的是开始和结束是相关的,因此,如果它只匹配子字符串以A开头以B结尾,以B开头以A结尾等(如上面[]中的顺序) 即,我不想匹配ACDCDA,但我确实想匹配ACDCDB 我知道,通过将表单的四个查询串在一起,这是可
1) [ABCD]
2) (CD)+|(DC)+
3) [BADC]
问题是,此查询当然会匹配开头和结尾的任何ABCD。我想要的是开始和结束是相关的,因此,如果它只匹配子字符串以A开头以B结尾,以B开头以A结尾等(如上面[]中的顺序)
即,我不想匹配ACDCDA,但我确实想匹配ACDCDB
我知道,通过将表单的四个查询串在一起,这是可能的:
([A](CD)+|(DC)+[B])|([B](CD)+|(DC)+[A]) etc
但这很快就会变得丑陋难看。有没有更优雅的方法来处理正则表达式
编辑:回答评论中的问题:
语言是python,尽管理想情况下我正在寻找一个通用的正则表达式,以便在必要时可以在其他地方工作
其他示例:
可接受的:
CCDD
DCDC
DDCC
ACDB
ACDCDB
BCDA
不可接受:
ACDA
ACDCDA
ACDDCA
CCDC您可以使用以下选项(我能写的最短):
说明:
断言如果模式以A开头,则应以B结尾(?=^A.*B$)
请参见您使用的是哪种语言?您可以发布其他可接受和不可接受的字符串吗?
DDCD
不应采用可接受的模式:)谢谢!字母太多,眼睛开始模糊…此图案也与acddcblablab
匹配。您需要将其更改为(?=^A.*B$)|(?=^B.*A$)|(?=^C.*D$)|(?=^D.*C$)(?=^((CD)+(DC)+.$)
,更短,更有效/
((?=^A.*B$)|(?=^B.*A$)|(?=^C.*D$)|(?=^D.*C$))[ABCD]((CD)+|(DC)+)[ABCD]