正则表达式捕获组的内容并重用它们

时间:2017-09-23 12:18:02

标签: c# regex mysqli

如何编写正则表达式来替换

VALUES ('some text') 

SELECT * FROM (SELECT 'some text') AS tmp...

基本上,我有一个输入文件,有多个 Insert 语句。我想使用Regex将每个insert语句转换为 IF NOT EXISTS然后INSERT 语句(并在MySQL中运行)。

所以,这是我的意见:

 INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022') 

这是所需的输出:

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
    SELECT VersionNumber FROM ReleaseInfo WHERE VersionNumber = '1.0.0.1'
) LIMIT 1;

1 个答案:

答案 0 :(得分:2)

您可以使用

VALUES\s*\(([^()]*)\)

并将其替换为

SELECT * FROM (SELECT $1) AS tmp

a demo on regex101.com

<小时/> 细分,这说:

VALUES   # match VALUES
\s*\(    # whitespaces, optionally, (
([^()]*) # capture anything inside ()
\s*      # another whitespaces, optionally
\)       # )