我发现在 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')
我有两个问题:
pattern 是换行,pattern2 和pattern4 是\n。为什么 python 正则表达式为不同的字符串生成相同的模式?
不确定为什么 pattern3 也会生成相同的模式。当传递给 re parser 时,pattern3 代表\+ new line,为什么 re parser 将其转换为匹配的新行?
我正在使用 Python 3
请您参考如下方法:
组合 \n 在 Python 本身和 re 表达式中指示“换行符”作为好吧(https://docs.python.org/2.0/ref/strings.html)。
在常规 Python 字符串中,\n 被转换为换行符。换行符 code 然后作为文字字符被送入 re 解析器。
Python 字符串中的双 反斜杠被转换为单个反斜杠。因此,字符串 "\\n" 在内部存储为 "\n",当发送到 re 解析器时,它反过来将此组合 \n 识别为表示换行代码。
r 符号是一种避免必须输入双双反斜杠的快捷方式:
backslashes are not handled in any special way in a string literal prefixed with
'r'(https://docs.python.org/2/library/re.html)
