V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ekk0
V2EX  ›  Python

请教下不规则的 Python 正则匹配

  •  
  •   ekk0 · 2022-03-24 14:11:09 +08:00 · 2030 次点击
    这是一个创建于 977 天前的主题,其中的信息可能已经有所发展或是发生改变。
    str = """
    原告:芊大跌生物科技有限公司。注册地址:广州市海珠区新港东路 241143
    号 202 房。统一社会信用代码: 91440101M1111111.电话:123 。
    法定代表人:林子点。
    原告:林子点,女, 1998 年 1 月 1 日出生,身份证号: 4409021111081111116 ,注册地址:
    广东省茂名市茂南区新建路二巷 92111 号。
    被告一:广州昂立一号口服液。注册地址:广州市海珠区南华中路 281111
    号。统一社会信用代码: 91440111111111113 。
    负责人:王斐点。
    被告二:广州市海珠区琶洲街黄埔南。注册地址:广州市海珠区新
    港东路黄埔村。统一社会信用代码: 551111111MEA359637P 。
    """
    #这样只能获取到原告电话,但是,当原告 2 没有电话时候,结果就是其他字段了,怎么解决?
    rst = re.findall(r'原告.{0,1}[:|:|;](.*?)[,|。|,|;]+[^联系|电话]+[联系方式|电话|电话号码]+[:|:|;]+(.*?)[,|:|、|,|。|\.|;|联系]', str)
    print(rst)
    
    5 条回复    2022-03-25 17:22:39 +08:00
    ChaosesIb
        1
    ChaosesIb  
       2022-03-24 14:30:22 +08:00
    [^联系|电话]+ 匹配到了末尾,回溯后 [联系方式|电话|电话号码]+ 匹配到了信用代码,最后 .*? 就出问题了。
    建议你先学下正则基本语法,字符组里不需要写 |,多字符分支需要用分组,把这些毛病改了就自然修好了。
    另外,这个问题该发到正则节点。
    Lonenso
        2
    Lonenso  
       2022-03-24 19:50:52 +08:00
    除了应该学习一下正则以外,推荐用 https://regex101.com/ 练习和调试。
    ekk0
        3
    ekk0  
    OP
       2022-03-25 08:47:57 +08:00
    @ChaosesIb 谢谢
    ekk0
        4
    ekk0  
    OP
       2022-03-25 08:48:26 +08:00
    imn1
        5
    imn1  
       2022-03-25 17:22:39 +08:00
    联系|电话 --> 联 + (系|电) + 话
    但前面加上排除符就变成了排除 联系|电话 这五个字符,强调:是五个字符,不是四个

    我这样写你看明白了么?

    关于排除字符串(两个字符或以上连续),请搜索 “正则排除” 的相关文章
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5704 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:57 · PVG 16:57 · LAX 00:57 · JFK 03:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.