Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Regex-如何在文本中查找所有出现的命令插入(批处理SQL)_C#_Sql Server_Regex_Regex Group - Fatal编程技术网

C# Regex-如何在文本中查找所有出现的命令插入(批处理SQL)

C# Regex-如何在文本中查找所有出现的命令插入(批处理SQL),c#,sql-server,regex,regex-group,C#,Sql Server,Regex,Regex Group,我需要找到字符串中所有出现的INSERT命令。在插入的中间可以有一条断线 例如: ... SOME COMMAND TEXT SOME COMMAND TEXT INSERT INTO table (CAMPO 1, CAMPO 2) VALUES (1, 'some text in (parentheses) ') SOME COMMAND TEXT INSERT INTO table (CAMPO 1, CAMPO 2) VALUES

我需要找到字符串中所有出现的INSERT命令。在插入的中间可以有一条断线

例如:

  ...

    SOME COMMAND TEXT

    SOME COMMAND TEXT 

    INSERT INTO table (CAMPO 1, CAMPO 2) 
VALUES (1, 'some text in (parentheses) ')

    SOME COMMAND TEXT

    INSERT INTO table (CAMPO 1, CAMPO 2) VALUES (1, 2) 

    SOME COMMAND TEXT BELOW INSERT IN THE SAME LINE

    INSERT INTO table (CAMPO 1, CAMPO 2) VALUES (1, 2);INSERT INTO table (CAMPO 1, CAMPO 2) VALUES (1, 2);INSERT INTO table (CAMPO 1, CAMPO 2) VALUES (1, 2)

    SOME COMMAND TEXT 

    INSERT INTO table VALUES (1, 1, 1, 1, 1);
    INSERT INTO table VALUES (1, 1, 1, 1, 1) ;
    INSERT INTO table VALUES (1, 1, 1, 1, 1);
    INSERT INTO table VALUES (1, 1, 1, 1, 1) ;

    SOME COMMAND TEXT  
    SOME COMMAND TEXT  

    ...
在这种情况下,我需要使用正则表达式all insert

你们能帮帮我吗?

试试使用。检查行首^、插入、任何字符。任何非零次+,行尾$。锚定“^”和$确保整行匹配。m修饰符将多行字符串视为单独的行,而不是一条大行。g修饰符将确保我们不会在第一次匹配时停止

如果要匹配语句的特定组件,可以使用/^INSERT INTO.+VALUES.+$/gm并通过捕获组访问这些组件


如果insert语句中可能有换行符,则应尝试使用/^insert INTO:。\n+?值?:.|\n+?$/gm。带?:.|\n+?我们正在非贪婪地匹配任何字符,包括换行符。

以捕获所有insert语句。 你可以用

(INSERT INTO(?s:.)*?VALUES(?s:.)*?\))

显示输出结果

您尝试了什么?代码的行为与你期望的有什么不同?嗨,谢谢你的回答,问题是在插入的中间可以有一条断线,在这种情况下我怎么能忽略它呢?值?:.|\n+?$。正则表达式在处理转义字符和应用^&$对1个全文字符串进行配对时,或不包含\时如何工作scenario@SKLTFZ通过像我在回答中那样使用/m修饰符。如果不清楚,很抱歉。您好,再次感谢,但不起作用,插入值中的可以有“括号中的某些文本”这样的文本,并且在同一行中有更多的插入。您好,谢谢您的回答!问题是,在插入的中间可以有一条断线,在这种情况下,我怎么能忽略它呢?请检查更新答案,当你试图获取匹配的子串时,你需要包括新行,谢谢,但是我只得到了一个问题,插入值里面可以有一些像“括号中的一些文本”这样的文本。在这种情况下可能吗?不,您的情况下需要显式终止表达式,因为您的查询接受换行符,没有显式结束表达式,所以无法正常工作