Skip to main content
 首页 » 编程设计

python之使用 Python 的 re 模块查找与给定模式匹配的字符串并分隔行

2025年05月04日27wuhuacong

在一个随机字符串中,我需要找到一个与给定模式匹配的字符串,并在该字符串之后放置 ;。我想我应该使用 re 来做,但我不太熟悉它。

示例输入:

this is the first part of string 1/32 part this is the second part of string 

因此,我需要将 ; 放在 1/32 部分 之后,例如

this is the first part of string 1/32 part; this is the second part of string 

我知道我应该使用 re,而且我知道我可能应该使用 re.match,其模式看起来像 [1-1000]/[1 -1000]\spart 但我不确定从这里到哪里去。

编辑:以1/32为例,可以是65/123、1/3、6/7

请您参考如下方法:

您的用例称为替换。这正是 re.sub 的内容功能是为了。

import re 
 
s = "bla 1/6 part bla bla 76/88 part 12345/12345 part bla" 
print(s) 
s = re.sub(r'(\b\d{1,4}/\d{1,4} part)', r'\1;', s) 
print(s) 

这个的输出是

bla 1/6 part; bla bla 76/88 part; 12345/12345 part bla 

注意 ; 最后一次出现 part 之后的缺失。

我用了{} quantifiers将分数的分子和分母限制为 4 位十进制数字,这是您提到的 [1-1000] 表示法。用 1?\d{1,3} 可以更好地近似它(但这也不完全相同,它还允许例如 1999/1999)< sup>[1].


[1] 附注作为tripleee commented ,1到1000之间的十进制数的精确正则表达式是[1-9]([0-9][0-9]?)?|1000,看起来有点复杂,但是如果您将唯一的 4 位数字 1000 分开并在 1 到 3 位数字部分使用一对多余的括号,则构建模式会变得很明显:[1-9]([0 -9]([0-9])?)?。另一种选择是对 [0-9] 使用字符类快捷方式 \d,结果是 [1-9]\d{0,2}| 1000。

编辑:

  • 合并匹配分组。
  • 在分子前添加 anchor 。