mostly-harmless 2024-02-21 12:27 采纳率: 33.3%
浏览 8

Python中如何使用正则表达式排除指定字符前有数字的情况及字符前不是句号且字符后有数字的情况?

请问Python中如何使用正则表达式排除指定字符前有数字的情况,及字符前不是句号且字符后有数字的情况?
比如“1.”是指定字符,“1.请回复” “1.已知” “解释以下问题。1.30个城市中多少个”是需要的情况,不用排除。“为1.3” “31.4”就是需要排除的情况。
搜到的代码 【pattern = r'(?<!\d)' + re.escape(word) + r'(?!\d)' 】不能保留字符前是句号且字符后有数字的情况,把 “解释以下问题。1.30个城市中多少个”也给排除了。

  • 写回答

1条回答 默认 最新

  • 爱喝兽奶的荒天帝 全栈领域新星创作者 2024-02-21 19:31
    关注

    你可以尝试使用以下正则表达式来排除指定字符前有数字的情况,及字符前不是句号且字符后有数字的情况:

    import re
    
    text = "1.请回复 1.已知 解释以下问题。1.30个城市中多少个 为1.3 31.4"
    pattern = r'(?<![\d\.])(?<!\.)1\.(?!\d)'
    result = re.findall(pattern, text)
    print(result)
    
    

    在这个正则表达式中,我们使用了两个零宽断言:(?<![\d.]) 和 (?<!.)。前者表示匹配不以数字或句点开头的位置,后者表示匹配不以句点开头的位置。这样就可以排除指定字符前有数字的情况和字符前不是句号且字符后有数字的情况。同时,我们还使用了一个零宽断言 (?!\d),表示匹配不以数字结尾的位置,这样也可以排除字符后有数字的情况。

    结果输出为 ['1.', '1.', '1.'],符合你的要求。

    评论

报告相同问题?

问题事件

  • 修改了问题 2月21日
  • 创建了问题 2月21日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题