python原始字符串转义字符

San*_*996 1 python regex escaping

一个菜鸟问题.我正在阅读有关在python中使用正则表达式的文档.我的印象是,使用原始字符串会将'\'视为原样而不考虑将其作为转义序列.然而,在我阅读的例子中,

>>> phoneNumRegex = re.compile(r'(\(\d\d\d\)) (\d\d\d-\d\d\d\d)')
>>> mo = phoneNumRegex.search('My phone number is (415) 555-4242.')
>>> mo.group(1)
'(415)'
>>> mo.group(2)
'555-4242'
Run Code Online (Sandbox Code Playgroud)

显然,笔者逃脱"("与"\".我想知道怎么样.我觉得把一个"R"在带来像对待"\"没有区别.

Pau*_*McG 5

是的,此代码转义'('用于定义正则表达式,但Python解释器保留字符串中的'\'.

如果不使用原始字符串文字形式定义它,您将不得不写:

phoneNumRegex = re.compile('(\\(\\d\\d\\d\\)) (\\d\\d\\d-\\d\\d\\d\\d)')
Run Code Online (Sandbox Code Playgroud)

  • 是的,这首先是所有那些人的目的 - 区分'('正则表达式应该解释为分组操作符(无逃避)与'('应该在输入字符串中解析') (必须转义).看看给定的正则表达式中有两个组?第一组在括号内包含3个数字.组内的括号必须转义,否则正则表达式编译器会认为你在组中指定了一个组,并且不匹配输入字符串中的括号. (2认同)