【发布时间】:2017-07-13 21:41:57
【问题描述】:
我正在尝试使用以下代码仅获取“Text3”部分:
import re
stringtotest = "begin:Text1<wrong>Text2<wrong>Text3<right>Text4<wrong>"
right = re.findall("<wrong>(.+?)<right>",stringtotest)
>>> right
['Text2<wrong>Text3']
为什么 Python 也会给我 Text2?如何告诉他我只想要最近的“错误”之后的部分?谢谢你。
【问题讨论】:
-
这个问题与贪婪与非贪婪关系不大,因为即使是非贪婪匹配也无法产生预期的结果。提问者使用的是惰性匹配,它的攻击性更小。
-
你说得对。
-
抱歉,我是 Python 新手。如果我有 stringtotest = "begin\r\nText1\r\n
\r\nText2\r\nsome more text\r\n \r\nText3\r\n \r\ nText4\r\n " 我怎样才能只得到 之前的部分?
标签: python regex findall non-greedy