当存在多个括号时,如何使用正则表达式获取精确匹配的短语

时间:2016-08-30 05:24:50

标签: python regex text-processing

我有像

这样的文字
1) <img="" id="">data</img>
2) (hi "hello") data (some text)

我想只删除带括号和尖括号的文本,并在数据之间提取。我试过了

re.compile(r"\(.*\)")
re.compile(r"<.*>")

但由于结束括号位于文本末尾,因此在使用re.sub时会删除整个文本。 如何在多个大括号(角形或花括号)之间获取唯一数据

2 个答案:

答案 0 :(得分:2)

尝试非贪婪的正则表达式,即

DoCmd.OpenReport "ImageReport", acViewPreview, , "[ItemNumber] =" & Me.[Text1].Value

答案 1 :(得分:1)

In [68]: re.sub(r'<(.+?)>', '', '<img="" id="">data</img>')
Out[68]: 'data'

正则表达式解释:

<(.+?)>

Regular expression visualization

Debuggex Demo

In [68]: re.sub(r'\((.+?)\)', '', '(hi "hello") data (some text)')
Out[68]: ' data '

正则表达式解释:

\((.+?)\)

Regular expression visualization

Debuggex Demo

阅读“注意贪婪!”一节。在http://www.regular-expressions.info/repeat.html