Regex 在记事本中工作的正则表达式++;但不是用python
我正在记事本++中尝试这个正则表达式Regex 在记事本中工作的正则表达式++;但不是用python,regex,Regex,我正在记事本++中尝试这个正则表达式(WVDC)((?:.*\r\n){1}),它正在工作,但是当我在python中进行同样的操作时,它不会工作 文本是 Above 85°C the rated (DC/AC) voltage must be derated at per 1.5%/2.5%°C WVDC: 400 Volts DC SVDC: 600 Volts DC python代码 re.search(r'(WVDC)((?:.*\r\n){1})',txt) 以下脚本在Python中
(WVDC)((?:.*\r\n){1})
,它正在工作,但是当我在python中进行同样的操作时,它不会工作
文本是
Above 85°C the rated (DC/AC) voltage must be derated at per 1.5%/2.5%°C
WVDC: 400 Volts DC
SVDC: 600 Volts DC
python代码
re.search(r'(WVDC)((?:.*\r\n){1})',txt)
以下脚本在Python中为我工作:
input = """Above 85°C the rated (DC/AC) voltage must be derated at per 1.5%/2.5%°C
WVDC: 400 Volts DC
SVDC: 600 Volts DC"""
result = re.findall(r'(WVDC).*\r?\n', input)
print(result)
['WVDC']
注意,我对regex模式所做的唯一实质性更改是使回车
\r
可选。因此,Python中的多行字符串(可能是源代码使用的字符串)似乎只携带换行符,而不携带回车符。在任何情况下,使用\r?\n
匹配换行符通常是一个好主意,因为它可以同时覆盖Unix和Windows的行尾。以下脚本在Python中适用于我:
input = """Above 85°C the rated (DC/AC) voltage must be derated at per 1.5%/2.5%°C
WVDC: 400 Volts DC
SVDC: 600 Volts DC"""
result = re.findall(r'(WVDC).*\r?\n', input)
print(result)
['WVDC']
注意,我对regex模式所做的唯一实质性更改是使回车
\r
可选。因此,Python中的多行字符串(可能是源代码使用的字符串)似乎只携带换行符,而不携带回车符。在任何情况下,使用\r?\n
匹配换行符通常是一个好主意,因为它可以同时覆盖Unix和Windows的行尾。您没有展示一个可复制的示例,但是在Python中以文本模式打开文件将\r\n
转换为\n
。记事本++保留精确的行尾
从正则表达式中删除
\r
(或使其成为可选的)应该可以解决Python中的问题。您也可以以二进制模式打开文件,但建议以文本模式处理文本。您没有显示可复制的示例,但以Python文本模式打开文件会将\r\n
转换为\n
。记事本++保留精确的行尾
从正则表达式中删除
\r
(或使其成为可选的)应该可以解决Python中的问题。您也可以以二进制模式打开文件,但建议以文本模式处理文本。尝试删除\r
。Python中的代码是什么样子的?您是否逐行阅读?@IldarAkhmetov,删除返回的结果,但为什么它不起作用?将((?:.*\r\n){1})替换为(.*\n)
,下面有一些很好的答案,但是在这里您可以找到更多信息:尝试删除\r
。Python中的代码是什么样的?您是否逐行阅读?@IldarAkhmetov,删除返回的结果,但它为什么不起作用?请将((?:.*\r\n){1})
替换为(.*\n)
下面有一些很好的答案,但是在这里您可以找到有关这方面的更多信息: