Python 正则表达式将所有换行符直接替换为 char

Python Regex replace all newline characters directly followed by a char with char

示例字符串:

str = "test sdf sfwe \n \na dssdf 

我想更换:

\na

a

其中 'a' 可以是任何字符。

我试过了:

str = "test \n \na"
res = re.sub('[\n.]','a',str)

但是如何存储 \n 后面的字符并将其用作替换?

您可以将此正则表达式与捕获组一起使用:

>>> s = "test sdf sfwe \n \na dssdf"
>>> >>> print re.sub(r'\n(.)', r'', s)
test sdf sfwe  a dssdf
  • 搜索正则表达式 r'\n(.)' 将匹配 \n 后跟任何字符并捕获组 #1

  • 中的后续字符
  • 替换 r'' 是对捕获组 #1 的反向引用,它被放回到原始字符串中。

  • 最好避免使用 str 作为变量名,因为它是 python.

  • 中的保留关键字(函数)

如果任何字符是指任何非space字符,则使用此正则表达式并使用\S(非白色space 字符)而不是 .:

>>> print re.sub(r'\n(\S)', r'', s)
test sdf sfwe
 a dssdf

此外,这种基于前瞻的方法也适用于不需要任何捕获组的情况:

>>> print re.sub(r'\n(?=\S)', '', s)
test sdf sfwe
 a dssdf

请注意,[\n.] 将匹配 \n 中的任何一个或文字点,而不是 \n 后跟任何字符,

找到所有匹配项:

matches = re.findall( r'\n\w', str )

全部替换:

for m in matches :
    str = str.replace( m, m[1] )

就这些了,伙计们! =)

我认为最适合您的方法如下:

string = "test sdf sfwe \n \na dssdf"

import re
' '.join(re.findall('\w+',string))

'test sdf sfwe a dssdf'