如何在字符串中添加字符串?



问题很简单,给我一个随机字符串和一个随机模式,我被告知要得到该模式在字符串中出现的所有可能的组合,并在开始和结束用[target]和[endtarget]标记。

例如:

给出以下文本:"XuyZB8we4">

和以下模式:"XYZAB">

预期输出将是:"[target]X[endtarget] uy[目标]ZB[endtarget] 8 we4" .

我已经得到了识别所有单词的部分,但是我找不到将[target]和[endtarget]字符串放在模式(在代码匹配中称为)之后和之前的方法。

import re

def tagger(text, search):
place_s = "[target]"
place_f = "[endtarget]"
pattern = re.compile(rf"[{search}]+")
matches = pattern.finditer(text)
for match in matches:
print(match)
return test_string

test_string = "alsikjuyZB8we4 aBBe8XAZ piarBq8 Bq84Z "
pattern = "XYZAB"
print(tagger(test_string, pattern))

我也尝试了sub方法的for,但是我不能让它工作。

for match in matches:
re.sub(match.group(0), place_s + match.group(0) + place_f, text)
return text

re.sub允许您向模式内匹配的组传递反向引用。所以你需要把你的模式用括号括起来,或者创建一个命名组,然后它会用你想要的替换替换整个字符串中的所有匹配:

In [10]: re.sub(r'([XYZAB]+)', r'[target]1[endtarget]', test_string)
Out[10]: 'alsikjuy[target]ZB[endtarget]8we4 a[target]BB[endtarget]e8[target]XAZ[endtarget] piar[target]B[endtarget]q8 [target]B[endtarget]q84[target]Z[endtarget] '

使用这种方法,根本不需要re.finditer

最新更新