我只想得到“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?怎么告诉他我只想要最接近“错”的那部分?谢谢您。
最佳答案
点.
匹配任何内容。可以使用反字符类来限制匹配:
<wrong>([^<]+?)<right>
如果要获取没有外部标记的中间部分,请使用lookaheads和lookbehinds来断言标记的位置:
(?<=<wrong>)([^<]+?)(?=<right>)