Python 正则表达式:多个"start"术语,但它应该只匹配"end"术语之前的最后一个"start"术语



来自以下字符串:

s = "ABCD {DB_any_alphanumeric_character} ABCD {DB_any_alphanumeric_character}.TABLE ABCD"

我只想匹配{DB_any_alphanumeric_character}.TABLE.所以起始期限是{DB_,结束期限是.TABLE。我的困难出现了,因为字符串中有两个{DB_

如何使其仅从第二个{DB_匹配到.TABLE

我觉得这不可能是一个非常复杂的正则表达式,但是尽管在线阅读了数十个与正则表达式相关的 stackoverflow 问题和教程(例如 https://regex101.com、https://regexone.com/lesson/line_beginning_end 等(,但我还是失败了。

以下是我两次不成功的尝试:

exp = re.search(r"^{DBw*TABLE$", s)

它返回无。他们在我看来,它应该返回一个字符串,该字符串以{DB开头,后跟任何字母数字字符的零个或多个重复,并以TABLE结尾。

另一个尝试:

test = re.search(r"{DB(.+?).TABLE", s)

这返回{DB_ABCD\} ABCD {DB_ABCD}.TABLE,这正是我不想要的。

您可以使用正则表达式"{DB_w*}.TABLE",该正则表达式将仅返回后跟 .桌子

import re
s = "ABCD {DB_any_alphanumeric_character} ABCD {DB_any_alphanumeric_character}.TABLE ABCD"
exp = re.search(r"{DB_w*}.TABLE", s)
print(exp.group(0))

输出

'{DB_any_alphanumeric_character}.TABLE'

相关内容

最新更新