正则表达式模式提取子字符串

时间:2014-08-20 09:57:40

标签: python regex string

mystring = "q1)whatq2)whenq3)where"

想要["q1)what", "q2)when", "q3)where"]

之类的东西

我的方法是找到q\d+\)模式然后移动,直到我再次找到这个模式并停止。但是我无法阻止。

我做了req_list = re.compile("q\d+\)[*]\q\d+\)").split(mystring)

但这会给整个字符串。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下使用re.findall函数

的代码
>>> import re
>>> s = "q1)whatq2)whenq3)where"
>>> m = re.findall(r'q\d+\)(?:(?!q\d+).)*', s)
>>> m
['q1)what', 'q2)when', 'q3)where']

<强>解释

  • q\d+\)匹配格式为q后跟一个或多个数字的字符串,然后再加上)符号。
  • (?:(?!q\d+).)*否定前瞻,匹配任何不属于q\d+的字符零次或多次。