Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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# 删除C中带有正则表达式的方括号_C#_Regex_String_Replace - Fatal编程技术网

C# 删除C中带有正则表达式的方括号

C# 删除C中带有正则表达式的方括号,c#,regex,string,replace,C#,Regex,String,Replace,我想从SQL字符串中删除方括号,但仅限于其中没有空格的地方 例如,选择[intId],[说明]应返回选择intId[说明] 我可以用正则表达式得到不带空格的方括号: \[[^\s]*\] 如何在原始字符串中删除这些匹配项中的方括号?Regex是不够的,除非只对上述特定字符串一次性删除。如果您在许多SQL行上以自动方式执行此操作,那么在删除所需的括号时可能会遇到一大堆麻烦 sql = Regex.Replace(sql, "\\[([^\\s]*)\\]", "$1"); 在这种情况下,您需要

我想从SQL字符串中删除方括号,但仅限于其中没有空格的地方

例如,选择[intId],[说明]应返回选择intId[说明]

我可以用正则表达式得到不带空格的方括号:

\[[^\s]*\]

如何在原始字符串中删除这些匹配项中的方括号?

Regex是不够的,除非只对上述特定字符串一次性删除。如果您在许多SQL行上以自动方式执行此操作,那么在删除所需的括号时可能会遇到一大堆麻烦

sql = Regex.Replace(sql, "\\[([^\\s]*)\\]", "$1");

在这种情况下,您需要更多的SQL lexer/parser,它可以帮助您只关注列名称,而不关注表名称、字符串、触发器或函数中的参数等。

确实要这样做吗?字符串文字中的括号呢?或者与保留字匹配的列名称?当然,我知道这里有陷阱。我想我更广泛的问题是如何用匹配本身的内容替换正则表达式匹配。我现在明白了,在这个例子的帮助下。只有在对字符串进行某些分析后,才会进行此替换。您可以使用@\[\S+\]来提高该表达式的可读性。这可能会出现嵌套括号的问题。这在某种程度上取决于您处理的语法规则。[foo[bar baz]]最终将被foo[bar baz]替换。对于SELECT[intId]、[intId2]、[The Description]、[init[x]]这将返回SELECT intId]、[intId2[The Description],init[x]。如果将*greedy更改为*?not greedy,则结果将是SELECT intId,intId2[The Description],init[x]。