在 Windows 和 Linux 上的正则表达式结果之间获得不同的行为
Getting different behavior between regex results on Windows vs Linux
我正在运行使用以下正则表达式来提取字符串中 @
字符前后的值。
re.search(r'\S+ @ \S+(?=\n)', output).group().split(' @ ')
示例字符串如下所示:
1
1.1
2.2
2.2.2
20 @ 0xffffffff
SUCCESS
我已经在两种环境的 Python 控制台中对此进行了测试,它按我的预期运行。
我 运行 遇到的问题是当我 运行 我的鼻子在 Windows 上测试时,我在那条线上收到 AttributeError: 'NoneType' object has no attribute 'group'
错误。然而,当 运行 在 Linux 上进行鼻子测试时,这不会发生。
你有一个问题,因为你有 \n
作为换行符。在Windows中,需要指定\r\n
。因此,要同时支持 Windows 和 Linux 环境,请使用
r'\S+ @ \S+(?=\r?\n)'
此外,您应该在访问 .group()
之前检查是否存在匹配项。
我正在运行使用以下正则表达式来提取字符串中 @
字符前后的值。
re.search(r'\S+ @ \S+(?=\n)', output).group().split(' @ ')
示例字符串如下所示:
1
1.1
2.2
2.2.2
20 @ 0xffffffff
SUCCESS
我已经在两种环境的 Python 控制台中对此进行了测试,它按我的预期运行。
我 运行 遇到的问题是当我 运行 我的鼻子在 Windows 上测试时,我在那条线上收到 AttributeError: 'NoneType' object has no attribute 'group'
错误。然而,当 运行 在 Linux 上进行鼻子测试时,这不会发生。
你有一个问题,因为你有 \n
作为换行符。在Windows中,需要指定\r\n
。因此,要同时支持 Windows 和 Linux 环境,请使用
r'\S+ @ \S+(?=\r?\n)'
此外,您应该在访问 .group()
之前检查是否存在匹配项。