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 )用于正则表达式,因为正则表达式和非原始字符串都使用反斜杠作为转义字符。例如,要将文字反斜杠与普通字符串中的正则表达式相匹配,将是 '\\\\'
;使用原始字符串,它只是 '\\'
。
关于python - r'string'和python中的普通 'string'有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22429505/