Fork me on GitHub

python正则表达式-匹配用符号分割的多个字符串

代码

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
posted @ 2021-01-13 22:44  西西嘛呦  阅读(595)  评论(0编辑  收藏  举报