在Python正则表达式中指定匹配新行的不同方法

时间:2016-04-23 23:55:12

标签: python regex python-3.x

我发现有不同的方法来匹配python正则表达式中的新行。例如,下面代码中使用的所有模式都可以匹配新行

str = 'abc\n123'
pattern = '\n'   # print outputs new line 
pattern2 = '\\n' # print outputs \n
pattern3 = '\\\n' # print outputs \ and new line
pattern4 = r'\n'  # print outputs \n
s = re.search(pattern, str).group()
print ('a' + s + 'a')

我有两个问题:

  1. pattern是一个新行,pattern2和pattern4是\ n。为什么python正则表达式为不同的字符串生成相同的模式?

  2. 不确定为什么pattern3也会生成相同的模式。传递给re parser时,pattern3代表\ + new line,为什么re parser会将其转换为匹配的新行?

  3. 我正在使用Python 3

1 个答案:

答案 0 :(得分:2)

组合\n表示'换行符'在两者中 Python本身re表达式中(https://docs.python.org/2.0/ref/strings.html)。

在常规Python字符串中,\n被转换为换行符。然后将换行符代码作为文字字符输入re解析器。

Python字符串中的 double 反斜杠被转换为单个字符串。因此,字符串"\\n"在内部存储为"\n",当发送到re解析器时,会将此组合\n识别为表示换行代码。

r符号是防止必须输入双倍双反斜杠的快捷方式:

  在前缀为'r'https://docs.python.org/2/library/re.html

的字符串文字中,不会以任何特殊方式处理

反斜杠