Python正则表达式中的正斜杠

2024-06-01 06:41:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

>>> import re
>>> re.sub(r'[/]*', 'a', 'bcd')
'abacada'

显然,正斜杠在字符之间匹配(即使它在字符类中,但只有当星号存在时)。背上的伤口逃不掉。我找了一段时间,没有找到任何文件。有什么线索吗?


Tags: 文件字符串importre表达式数学星号字符
3条回答

r'[/]*'表示“匹配0个或多个正斜杠”。“b”&;“c”和“c”&;“d”之间正好有0个正斜杠。因此,这些匹配项被替换为“a”。

查看Python的re模块上的here for documentation

我认为它不是/,而是第一个字符类中的-[+-/]匹配+/和两者之间的任何ASCII值,它们碰巧包含逗号。

也许文档中的提示有助于:

If you want to include a ']' or a '-' inside a set, precede it with a backslash, or place it as the first character.

你是说用'a'替换zero或更多斜杠。所以它确实用'a'替换了每个“no character”。:)

您可能是指[/]+,即一个或多个斜杠。

编辑:阅读Ber's answer以获得原始问题的解决方案。我没有仔细阅读整个问题。

相关问题 更多 >