Skip to main content
 首页 » 编程设计

python之r'string'和python中的普通 'string'有什么区别

2025年05月04日9lhb25

python 中的 r 字符串 (r'foobar') 和普通字符串 ('foobar') 有什么区别? r'string' 是正则表达式字符串吗?

我已经尝试了以下方法,但对我的正则表达式匹配没有任何影响:

>>> import re 
>>> n = 3 
>>> rgx = '(?=('+'\S'*n+'))' 
>>> x = 'foobar' 
>>> re.findall(rgx,x) 
['foo', 'oob', 'oba', 'bar'] 
>>> 
>>> rgx2 = r'(?=('+'\S'*n+'))' 
>>> re.findall(rgx2,x) 
['foo', 'oob', 'oba', 'bar'] 
>>> 
>>> rgx3 = r'(?=(\S\S\S))' 
>>> re.findall(rgx3,x) 
['foo', 'oob', 'oba', 'bar'] 

请您参考如下方法:

r 并不表示“正则表达式字符串”;它的意思是“原始字符串”。根据 the docs :

String literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and use different rules for interpreting backslash escape sequences.

它们通常用于(和 recommended )用于正则表达式,因为正则表达式和非原始字符串都使用反斜杠作为转义字符。例如,要将文字反斜杠与普通字符串中的正则表达式相匹配,将是 '\\\\';使用原始字符串,它只是 '\\'。