>> p.sub-6ren">
gpt4 book ai didi

python - 使用正则表达式 python 将单词放在括号中

转载 作者:行者123 更新时间:2023-11-30 22:07:57 25 4
gpt4 key购买 nike

如何在 python 中将另一个单词后面的一些单词放在方括号/圆括号中?对于 2 个单词,它看起来像:

>>> p=re.compile(r"foo\s(\w+)\s(\w+)")
>>> p.sub( r"[\1] [\2]", "foo bar baz")
'[bar] [baz]'

我想要未定义的字数。我想出了这个,但似乎不起作用。

>>> p=re.compile(r"foo(\s(\w+))*")
>>> p.sub( r"[\2] [\2] [\2]", "foo bar baz bax")
'[bax] [bax] [bax]'

在这种情况下期望的结果是

'[bar] [baz] [bax]'

最佳答案

您可以使用类似的解决方案

import re

p = re.compile(r"(foo\s+)([\w\s]+)")
r = re.compile(r"\w+")
s = "foo bar baz"
print( p.sub( lambda x: "{}{}".format(x.group(1), r.sub(r"[\g<0>]", x.group(2))), s) )

请参阅Python demo

第一个(foo\s+)([\w\s]+)模式匹配和捕获 foo随后将 1 个以上的空格放入第 1 组,然后将 1 个以上的单词和空白字符捕获到第 2 组。

然后,在 re.sub 内,替换参数是一个 lambda 表达式,其中所有 1+ 单词 block 都使用第二个简单的 \w+ 用方括号括起来。正则表达式(这样做是为了确保单词之间的空格数量相同,否则,可以在没有正则表达式的情况下完成)。

请注意[\g<0>]替换图案插入[ ,整个匹配值 ( \g<0> ),然后 ] .

关于python - 使用正则表达式 python 将单词放在括号中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52331758/

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