在Python正则表达式中正斜杠

exu*_*ero 15 python regex

我正在尝试使用Python正则表达式来查找字符串中的数学表达式.问题是正斜杠似乎做了一些意想不到的事情.我原以为这[\w\d\s+-/*]*可以用于查找数学表达式,但由于某些原因,它也会找到逗号.一些实验表明,正斜杠是罪魁祸首.例如:

>>> import re
>>> re.sub(r'[/]*', 'a', 'bcd')
'abacada'
Run Code Online (Sandbox Code Playgroud)

显然,正斜杠在字符之间匹配(即使它在字符类中,但只有在存在星号时).反斜杠不会逃脱它们.我已经找了一段时间而没有找到任何关于它的文件.有什么指针吗?

Ber*_*Ber 22

看看这里的文档 Python的上re模块.

我认为它不是/,而是-你的第一个字符类:[+-/]匹配+,/以及之间的任何ASCII值,恰好包括逗号.

也许这些来自文档的提示有助于:

如果要在集合中包含"]"或" - ",请在其前面加上反斜杠,或将其作为第一个字符.

  • RTFM 不是可接受的答案。其他答案都是正确的。 (2认同)

Luk*_*ský 8

你说它用替换或多个斜杠'a'.所以它确实取代了每个"没有人物" 'a'.:)

你可能意味着[/]+,即一个或多个斜杠.

编辑:阅读Ber的解决原始问题的答案.我没有仔细阅读整个问题.