gpt4 book ai didi

python - 需要正则表达式才能在 python 中仅获取 Tably 名称和主键

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:48 24 4
gpt4 key购买 nike

可能这个问题很愚蠢,但我无法生成正则表达式来获取表名和主键。

表:

CREATE TABLE 'dhcpr_dhcprelayinterface'  (
'vrId' integer default 0,
'ifName' string ,
PRIMARY KEY(ifName,vrId),
FOREIGN KEY (vrId) REFERENCES 'vr_vr'(vrId) ON DELETE CASCADE ON UPDATE CASCADE);

我正在使用:begin = re.compile(r"CREATE TABLE[\"]*([^\"]+)[\"]*[(]([^/;]+)[/;]",re. IGNORECASE) 获取所有表名和数据。

但我只需要包含表名和 PRIMARY KEY 的数据。

预期输出:

dhcpr_dhcprelayinterface
PRIMARY KEY(ifName,vrId)

最佳答案

此解决方案解决了一些您似乎并不担心(但值得担心)的问题,例如,SQLite 允许您编写转义 '作为'' , CREATE 之间可能有任意数量的空格,甚至是换行符和 TABLE , 和 PRIMARY 之间, KEY , 和 ( :

s = """\
CREATE TABLE 'dhcpr_dhcprelayinterface' (
'vrId' integer default 0,
'ifName' string ,
PRIMARY KEY(ifName,vrId),
FOREIGN KEY (vrId) REFERENCES 'vr_vr'(vrId)
ON DELETE CASCADE ON UPDATE CASCADE);
"""

pattern = """
CREATE \s+ TABLE \s+
'((?:[^']|'')*)' # allows escaped single quote
.+ # stuff between table name and primary key
(PRIMARY \s+ KEY\s? \([^)]*\))
"""
mo = re.search(pattern, s, re.IGNORECASE | re.VERBOSE | re.DOTALL)
print(mo.groups())

输出:

('dhcpr_dhcprelayinterface', 'PRIMARY KEY(ifName,vrId)')

关于python - 需要正则表达式才能在 python 中仅获取 Tably 名称和主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617396/

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