regex 在Python 3中如何在正则表达式中捕捉字符串的一部分[replicate]

bsxbgnwa  于 2022-12-24  发布在  Python
关注(0)|答案(1)|浏览(134)
    • 此问题在此处已有答案**:

(9个答案)
How can I find all matches to a regular expression in Python?(1个答案)
2天前关闭。
我尝试用Python构建一个正则表达式,它可以接受字符串的一部分,例如:

(% aaa bbb cc %) dsds (% dd %)

我想在最后得到两个子字符串:

  1. aaa bbb立方厘米
    1.日
    (%%)之间的串。
    我试试这个:(\(%.*%\))-但它占用所有行:-\
import re

a = "(% aa bbb %) dsds (% ccc %)"
x = re.search("(\(%.*%\))", a)

print(x.group())

你能帮我一下吗?谢谢!

yrwegjxp

yrwegjxp1#

  • 您需要使用?修饰符来获取最小的可能匹配,而不是最大的匹配(称为“懒惰”或“非贪婪”)
  • 使用.findall,因为您将获得多个匹配项
a = "(% aa bbb %) dsds (% ccc %)"
x = re.findall("\(%\s(.*?)\s%\)", a)

print(x)

产出

['aa bbb', 'ccc']

regex101.com上查看更多说明和现场演示。

相关问题