Skip to main content
 首页 » 编程设计

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

2024年10月24日25leader

我发现在 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 将其转换为匹配的新行?

我正在使用 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)