我知道有不同的方法可以做到这一点,但我只想知道为什么我的正则表达式不起作用。这实际上不是我需要做的事情,我只是想看看我是否可以使用正则表达式来做到这一点,我不知道为什么我的代码不起作用。
给定一个字符串 S,我想找到所有包含遵循特定规则的子序列 Q 的非重叠子字符串。现在,假设我正在搜索 subsequence "abc"
。我想匹配一个 S 的子字符串,该子字符串包含'a'
在某个点'b'
后跟在某个点后跟在某个点上,'c'
并具有 no'a'
跟随'a'
和 no'a'
或'b'
跟随的限制'b'
。我使用的正则表达式如下(在python中):
regex = re.compile(r'a[^a]*?b[^ab]*?c')
match = re.finditer(regex, string)
for m in match:
print m.group(0)
对我来说,这分解并如下所示:
a[^a]*?b
:'a'
后跟不包括'a'
并以 a 结尾'b'
[^ab]*?c
的最小字符数 : 不包括'a'
or'b'
并以 a 结尾的最小字符数'c'
所以把这一切放在一起,我假设我会匹配 S 的非重叠子串,其中包含符合我的排除规则的子序列“abc”。
这适用于以下情况:
S = "aqwertybwertcaabcc"
,这给了我"aqwertybwertc"
和"abc"
,
但它无法为 工作S = "abbc"
,因为它与 匹配"abbc"
。