gpt4 book ai didi

python 重新正则表达式

转载 作者:行者123 更新时间:2023-12-05 07:45:47 25 4
gpt4 key购买 nike

我有一个字符串:

A = '\r\nGigabitEthernet1/0/26  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/27  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/28  unassigned      YES unset  down                  down    \r\nSW-P-24#                                       '

我的正则表达式是

r'\\r?\\n?.{0,100}\s{0,40}$'

我的目标是用'\\r\\n'替换'\r\nSW-P-24#'

所以我的代码是

re.sub(r'\s*\\r?\\n?.{0,100}\s{0,40}$', '\\r\\n', A)

我的期望返回是

'\r\nGigabitEthernet1/0/26  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/27  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/28  unassigned      YES unset  down                  down    \r\n'

但是 Python 返回:

'\r\nGigabitEthernet1/0/26  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/27  unassigned      YES unset  down                  down    \r\nGigabitEthernet1/0/28  unassigned      YES unset  down                  down    \r\nSW-P-24#                                       '

什么是正确的代码?

最佳答案

问题出在 \\r?\\n?

首先,原始前缀不需要双斜杠,然后“0 或 1”标志会混淆正则表达式引擎。

在 CR+LF 组上使用向后查找似乎可行(并且该技巧允许用空字符串替换而不是重复 CR+LF 字符串):

re.sub(r'(?<=\r\n).{0,100}\s{0,40}$', '', A)

但是,我不确定您是否只想删除最后一行,在这种情况下,不需要正则表达式:

"\r\n".join(A.split("\r\n")[:-1])

关于 python 重新正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41333242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com