Python re.M不适用于我的代码
我有以下代码:Python re.M不适用于我的代码,python,regex,Python,Regex,我有以下代码: import re s = """line1 line2""" print(re.sub("^", "=", s, re.M)) 输出为: =line1 line2 i、 e.注册。表达式“^”只查找字符串的开头,而不是文档中所述的行的开头。我确实意识到错误在我的代码中,但在哪里 一般来说,我需要替换字符串中每行的所有前导空格 谢谢大家! 这是因为您将标志参数作为位置传递。尝试: print(re.sub("^", "=", s, flags=re.M))
import re
s = """line1
line2"""
print(re.sub("^", "=", s, re.M))
输出为:
=line1
line2
i、 e.注册。表达式“^”只查找字符串的开头,而不是文档中所述的行的开头。我确实意识到错误在我的代码中,但在哪里
一般来说,我需要替换字符串中每行的所有前导空格
谢谢大家! 这是因为您将
标志
参数作为位置传递。尝试:
print(re.sub("^", "=", s, flags=re.M))
执行所做的操作将re.M
传递到count
参数。标志位于计数之后。在这种情况下,最好使用关键字
通过该修复,我得到:
=line1
= line2
在您的示例中,您将
re.M
作为第四个参数传递给re.sub
,这是允许的替换总数。恰好re.M
是一个数值常量8,因此您的代码相当于:
re.sub("^", "=", s, count=8)
正确的版本是将re.M
作为关键字参数传递:
import re
s = """line1
line2"""
print(re.sub("^", "=", s, flags=re.M))
您可以将标志移动到
re.compile
,以确保它不会被re.sub
误解:
print(re.sub(re.compile("^", re.M), "=", s))
例如:
import re
s = """line1
line2"""
line_start = re.compile("^", re.M)
print(re.sub(line_start, "=", s))
# =line1
# = line2
python是“win32上的python 3.6.0(v3.6.0:41DF79263A111201612年12月23日08:06:12)[MSC v.1900 64位(AMD64)]”