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'
示例字符串:
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'