gpt4 book ai didi

python - 正则表达式替换除模式以外的所有内容

转载 作者:行者123 更新时间:2023-12-04 04:12:32 26 4
gpt4 key购买 nike

这可能是重复的,但我正在尝试替换除特定字符串模式之外的所有内容。这是一个字符串示例:

'dkas;6-17'
'dsajdl 10'
'dsjalkdj16-20'

这里的目标是用空替换任何不是数字的数字。所以我从上面的字符串中得到的是:

'6-17'
''
'16-20'

第二个字符串不会产生任何结果,因为它与模式不匹配。我知道匹配我的模式的正则表达式,但我对如何使用 regexp_replace 来匹配除该模式以外的所有模式感到困惑。以下是我所拥有的,但这取代了我实际想要保留的模式。

re.sub('[0-9]{1,2}\-[0-9]{1,2}', '', text)

最佳答案

如果您的意思是第二个不会产生任何结果,您可以匹配除数字或换行符之外的任何字符,然后捕获组中的模式。

如果 sub 应该留下一个空字符串,您可以使用交替匹配整行。

[^\d\r\n]+(\d{1,2}-\d{1,2})|.+

部分

  • [^\d\r\n]+ 匹配除数字或换行符以外的任何字符 1 次以上
  • (\d{1,2}-\d{1,2}) 捕获组1,匹配1-2位数字,- 和 1-2 位数字
  • | 或者
  • .+ 匹配除换行符以外的任何字符 1+ 次

Regex demo | Python demo

示例代码

import re

lines = [
'dkas;6-17',
'dsajdl 10',
'dsjalkdj16-20'
]

for text in lines:
print(re.sub('[^\d\r\n]+(\d{1,2}-\d{1,2})|.+', r'\1', text))

输出

6-17

16-20

关于python - 正则表达式替换除模式以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61483793/

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