来自以下字符串:
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'