羽中飞人 2021-05-02 10:33 采纳率: 51.1%
浏览 54
已采纳

python 正则表达式中re.split()函数问题

多个正则表达式,如何知道是哪个表达式匹配上,并分组的

a1 = "[' 儿童注意事项', ' 因未全面评估相应的安全性,因此禁用。 妊娠与哺乳期注意事项', ' 因未全面评估相应的安全性,因此禁用。 老人注意事项', ' 高龄患者应慎用。一般采用首次0.3g而后逐渐增量的方法给药,并注意用药间隔。 ']"
b1 = re.split(r"儿童注意事项|妊娠与哺乳期注意事项|老人注意事项", a1, maxsplit=3)
print(b1)


a2 = "[' 妊娠与哺乳期注意事项', ' 本品有生殖毒性,孕妇使用本品前必须充分权衡利弊。哺乳期妇女在用药期间需暂停哺乳。 老人注意事项', ' 由于生理性肾功能的衰退,本品剂量与用药间期需调整。 ']"
b2 = re.split(r"儿童注意事项|妊娠与哺乳期注意事项|老人注意事项", a2, maxsplit=3)
print(b2)

上图,如何知道结果是三个条件中的哪几个起的作用?
比如是“儿童注意事项”分割的,还是“妊娠与哺乳期注意事项”分割的,还是“老人注意事项”分割的?

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-05-02 10:54
    关注

    将模式的3个并列选项加上括号,返回的结果会在两个分割项之间增加是哪个分割选项起作用,比如:

    >>> import re
    >>> a = "[' 儿童注意事项', ' 因未全面评估相应的安全性,因此禁用。 妊娠与哺乳期注意事项', ' 因未全面评估相应的安全性,因此禁用。 老人注意事项', ' 高龄患者应慎用。一般采用首次0.3g而后逐渐增量的方法给药,并注意用药间隔。 ']"
    >>> b = re.split(r"儿童注意事项|妊娠与哺乳期注意事项|老人注意事项", a1, maxsplit=3) # 这是题主的写法
    >>> len(b)
    4
    >>> b
    ["[' ", "', ' 因未全面评估相应的安全性,因此禁用。 ", "', ' 因未全面评估相应的安全性,因此禁用。 ", "', ' 高龄患者应慎用。一般采用首次0.3g而后逐渐增量的方法给药,并注意用药间隔。 ']"]
    >>> c = re.split(r"(儿童注意事项)|(妊娠与哺乳期注意事项)|(老人注意事项)", a1, maxsplit=3) # 新的写法
    >>> len(c)
    13
    >>> c[::4] # 隔4取1,和原来的分割结果相同(因为有3个选项,所以隔4取1)
    ["[' ", "', ' 因未全面评估相应的安全性,因此禁用。 ", "', ' 因未全面评估相应的安全性,因此禁用。 ", "', ' 高龄患者应慎用。一般采用首次0.3g而后逐渐增量的方法给药,并注意用药间隔。 ']"]
    >>> c[::4] == b # 验证和原来的分割结果一致
    True 
    >>> c[1:4], c[5:8], c[9:12] # 这是起作用的那个分割选择项
    (['儿童注意事项', None, None], [None, '妊娠与哺乳期注意事项', None], [None, None, '老人注意事项'])
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊