我知道有不同的方法可以做到这一点,但我只想知道为什么我的正则表达式不起作用。这实际上不是我需要做的事情,我只是想看看我是否可以使用正则表达式来做到这一点,我不知道为什么我的代码不起作用。
给定一个字符串 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"。