我有一个字符串s1,我想找到所有以ABC开头,以BCD结尾的匹配字符串:
这是我尝试过的,它将返回['ABCDDDCECCCBCDABCVVVBCD']
但是我想要的是:ABCDDDCECCCBCD, ABCVVVBCD
实际上有两个匹配的字符串序列
我怎样才能做到这一点?
谢谢!!你知道吗
s1='AABCDDDCECCCBCDABCVVVBCD'
t1 ='ABC.*BCD'
t2 = 'ABC.*CEC'
我想得到所有符合条件的字符串,即从ABD开始,以BCD结束,从ABC开始,以CEC结束。
所以预期的结果是ABCDDDCEC, ABCVVVBCD
它不应该返回abcdddceccbcd
正则表达式中有两个问题。你知道吗
.*
,它贪婪地捕捉所有的东西,并且会尽可能多地捕捉,这会耗尽ABCsomethingBCD
的任何序列$
字符串结束锚点,它强制字符串匹配到行尾。你知道吗您可以使用这个正则表达式,其中匹配从
ABC
开始,然后通过非贪婪正则表达式捕获尽可能少的内容.*?
,然后匹配BCD
,并且由于没有$
字符,所以在行尾之前不会强制匹配。注意,即使将.*
更改为.*?
,并且不从regex中删除$
,在行尾之前仍然只能得到一个匹配,这是因为.*?
被强制匹配到行尾,因为regex中存在$
字符。修正使行为符合预期。你知道吗Python演示
指纹
如果您的字符串是
AABCDDDCECCCABCVVVBCD
,并且在BCD
之前您不想匹配字符串中的第二个ABC
,您可以使用这个基于tempered greedy token的regexRegex Demo
编辑2: 对于给定的字符串
AABCDDDCECCCABCVVVBCD
,您希望根据您的后期编辑获得这两个匹配项你可以用这个正则表达式
Regex Demo
相关问题 更多 >
编程相关推荐