代码
import re
text = "今天我玩了英雄联盟的很多英雄,比如“德玛西亚”、“德玛西亚皇子”、“德邦总管”等等,我玩了穿越火线的许多枪,比如“巴雷特”、“马来剑”等等。"
pattern = r"比如[\“]([\u4e00-\u9fa5])+[\”](、[\“]([\u4e00-\u9fa5])+[\”])*"
res = re.finditer(pattern, text)
print(res)
for span in res:
origin_text = span.group()
print(origin_text)
start = text.index(origin_text)
match_text = re.sub("比如|\“|\”","",origin_text).split("、")
for wg in match_text:
cur_start = origin_text.index(wg)
abs_start = start + cur_start
abs_end = abs_start + len(wg)
print(wg, abs_start, abs_end)
结果
<callable_iterator object at 0x000002787DEB3C50>
比如“德玛西亚”、“德玛西亚皇子”、“德邦总管”
德玛西亚 18 22
德玛西亚皇子 25 31
德邦总管 34 38
比如“巴雷特”、“马来剑”
巴雷特 57 60
马来剑 63 66