我只想得到“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>)

09-26 22:01