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

    我这样写你看明白了么?

    关于排除字符串(两个字符或以上连续),请搜索 “正则排除” 的相关文章
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5748 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 06:51 · PVG 14:51 · LAX 23:51 · JFK 02:51
    ♥ Do have faith in what you're doing.