我试图仅使用以下代码获取“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?如何告诉他我只想要在最近的“错误”之后的部分?谢谢。
答案 0 :(得分:4)
点.
匹配任何内容。您可以使用否定的字符类来限制匹配:
<wrong>([^<]+?)<right>
如果你想获得没有外部标签的中间部分,可以使用lookaheads和lookbehinds来断言标签的位置:
(?<=<wrong>)([^<]+?)(?=<right>)
答案 1 :(得分:1)