gpt4 book ai didi

python - Python 正则表达式中的反斜杠字符

转载 作者:行者123 更新时间:2023-12-04 10:14:25 25 4
gpt4 key购买 nike

Python documentation for Regex ,作者提到:

regular expressions use the backslash character ('\') to indicate special forms or to allow special characters to be used without invoking their special meaning. This conflicts with Python’s usage of the same character for the same purpose in string literals.



然后他继续举一个匹配 \section 的例子。在正则表达式中:

to match a literal backslash, one has to write '\\' as the RE string, because the regular expression must be \, and each backslash must be expressed as \ inside a regular Python string literal. In REs that feature backslashes repeatedly, this leads to lots of repeated backslashes and makes the resulting strings difficult to understand.



然后他说解决这个“反斜杠瘟疫”的方法是以 r 开头的字符串。把它变成一个原始字符串。

后来,他给出了这个使用 Regex 的例子:
p = re.compile('\d+')
p.findall('12 drummers drumming, 11 pipers piping, 10 lords a-leaping')

这导致:
['12', '11', '10']
我很困惑为什么我们不需要包含 r在这种情况下之前 '\d+' .我认为,基于前面对反斜杠的解释,我们需要告诉 Python 这个字符串中的反斜杠不是它知道的反斜杠。

最佳答案

Python 只识别一些以 \ 开头的序列作为转义序列。例如 \d不是已知的转义序列,因此对于这种特殊情况,无需转义反斜杠以将其保留在那里。

(在 Python 3.6 中)"\d""\\d"是等价的:

>>> "\d" == "\\d"
True
>>> r"\d" == "\\d"
True

以下是所有已识别转义序列的列表: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

关于python - Python 正则表达式中的反斜杠字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61144812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com