在Python中使用正则表达式替换括号

2024-09-28 19:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用1替换数字或单个字母(1)、(a)周围的括号。二,。我想保留较长的文字(reprehenderit)

这就是我尝试过的。当我只想让句号出现一次时,所有前括号的两边都会出现句号

多谢各位


import re

text = '''Lorem ipsum dolor sit amet,\n\n(1)consectetur adipiscing elit, sed do eiusmod tempor incididunt\n\n(2)ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip\n\n(a) ex ea (commodo consequat). Duis aute irure dolor in (reprehenderit) in voluptate velit esse cillum dolore eu\n\n(b) fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'''

result = re.sub(r'[\(\)]','.\1', text)

Print(result)

我得到的是:

Lorem ipsum dolor sit amet,

.1. consectetur adipiscing elit, sed do eiusmod tempor incididunt

.2. ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip

.a. ex ea .commodo consequat.. Duis aute irure dolor in .reprehenderit. in voluptate velit esse cillum dolore eu

.b. fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

我正在寻找:

Lorem ipsum dolor sit amet,

1. consectetur adipiscing elit, sed do eiusmod tempor incididunt
2. ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
    a. ex ea (commodo consequat). Duis aute irure dolor in (reprehenderit) in voluptate velit esse cillum dolore eu
    b. fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Tags: indosedipsumloremutdoloramet
2条回答
result = re.sub(r'\(([0-9a-z])\)', r'\1. ', text)

实际上,您正在删除任何带有点的()以及带有八进制代码\001的字符

如果要将行首的(...)替换为一个字母或数字,请使用

result = re.sub(r'^\(([\da-z])\)', r'\1. ', text, flags=re.M)

this regex demo。注意^的使用,它只允许在行首进行匹配(它与flags=re.M标志一起工作)

要在有1+个数字字母时删除,请使用

result = re.sub(r'^\((\d+|[a-z]+)\)', r'\1. ', text, flags=re.M)

regex demo。这里,

  • ^-匹配行的开头
  • \(-(字符
  • (\d+|[a-z]+)-1个或多个数字或1个或多个字母
  • \)-a)字符

相关问题 更多 >