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
miniyao
V2EX  ›  Python

Python 正则表达式,匹配连续反斜杠,应该是用 2 个\\,还是 4 个\\\\ 这样?

  •  
  •   miniyao · 2021-02-23 13:09:53 +08:00 · 2326 次点击
    这是一个创建于 1129 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原字符串:

    str = 'A\B\\C\\\D\\\\E'
    

    把原字符串中的反斜杠,全部改成逗号 ,

    out1 = re.sub(r'[\\]', ', ', str)
    out2 = re.sub(r'[\\\\]', ', ', str)
    

    out1 和 out2 输出结果是一样的,看到有不一样的用法,哪个是更规范的匹配方式?

    8 条回复    2021-02-24 09:25:05 +08:00
    xuboying
        1
    xuboying  
       2021-02-23 13:12:32 +08:00
    正则语法方括号里重复多个的内容不是和写一个是一个意思么,这个和 python 没关系吧?
    no1xsyzy
        2
    no1xsyzy  
       2021-02-23 13:23:21 +08:00
    首先你要搞懂正则的语法
    然后你要搞懂正则没有 “更规范的匹配方式”

    在解释这个问题时,建议你拿个显示正则的 AST 的工具看一下。

    [\\] ~ (any-of \x1c)
    [\\\\] ~ (any-of \x1c \x1c)
    DOLLOR
        3
    DOLLOR  
       2021-02-23 13:59:20 +08:00   ❤️ 2
    正则语法方括号里的每个字符是独立的,比如[abc]匹配的是"a"、"b"、"c",而不是连续的"abc"字符串。所以,你在方括号里无论写几个\,它都是匹配一个\,意义都是一样的。
    julyclyde
        4
    julyclyde  
       2021-02-23 15:34:00 +08:00
    raw string 试试?就不需要 escape 了吧
    RIcter
        5
    RIcter  
       2021-02-23 15:37:30 +08:00
    [] 的问题,参见 #3

    re.sub(r'\\\\', ', ', str) -> 'A\\B\\C, D, E'
    0clickjacking0
        6
    0clickjacking0  
       2021-02-23 16:28:55 +08:00
    楼主的意思是每一个\都要替换成逗号吗
    loli
        7
    loli  
       2021-02-23 17:39:28 +08:00
    为什么要加[]?
    后面没{}单纯一个[]有什么意义吗?
    imlinhanchao
        8
    imlinhanchao  
       2021-02-24 09:25:05 +08:00
    re.sub(r'\\+', ', ', str)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3315 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:33 · PVG 21:33 · LAX 06:33 · JFK 09:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.