我已经尝试了几种在正则表达式中使用变量的方法。但似乎都不能满足我的需求。
我想在一个字符串(例如 "barbarfoofooffoobarbar")中搜索一个连续重复的子串(例如foofoofoo)。然而,我需要重复的子串(foo)和重复的次数(在本例中,3)都是动态的,包含在变量中。由于重复的正则表达式是re{n},这些大括号与我放在字符串内的变量有冲突,因为它们周围也需要大括号。
这段代码应该符合foofoofoo,但不符合foo或foofoo。
我怀疑我需要使用某种字符串插值法。
我尝试了一些东西,比如
n = 3
str = "foo"
string = "barbarfoofoofoobarbarbar"
match = re.match(fr"{str}{n}", string)
或
match = re.match(fr"{str}{{n}}", string)
或逃之夭夭
match = re.match(fr"re.escape({str}){n}", string)
但似乎都没有用。有什么想法吗?这真的很重要,这两个信息都是动态的,而且它只匹配连续的东西。也许我可以用findall或者finditer?我不知道该如何继续。
我没有尝试过的是不使用正则表达式,而是使用类似于
if (str*n) in string:
match
我不知道这是否可行,但如果我需要regex的额外功能,我希望能够使用它。
对于字符串 barbarfoofoofoobarbarbar
如果你想捕捉 foofoofoo
,regex将是 r"(foo){3}"
.如果你想动态地做这个,你可以做的是 fr"({your_string}){{{your_number}}}"
.
如果你想在f弦中使用卷曲的括号,你可以使用 {{
或 }}
而它会被印刷成 {
或 }
.
还有: str
不是一个好的变量名,因为 str
是一个类(字符串类)。