Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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/2/.net/22.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# 解析来自GetSchema的正则表达式';s公共架构集合_C#_.net_Sql_Regex_Schema - Fatal编程技术网

C# 解析来自GetSchema的正则表达式';s公共架构集合

C# 解析来自GetSchema的正则表达式';s公共架构集合,c#,.net,sql,regex,schema,C#,.net,Sql,Regex,Schema,我有一个未知的连接正在传入,通过baseDbConnection,它可能是MySQL、SQLite、Oracle、SQL Server、Access,我不知道 我需要从模式信息中提取带引号的标识符,我已经知道了如何获取带引号的标识符,但它是在正则表达式中返回的,我对正则表达式不够熟悉,无法动态解析这些标识符 考虑到C#代码: 我需要帮助设置LeftIdentifier和righIdentifier的值 如果使用Oracle连接运行该代码,quoteIdentifier返回以下结果: (([^\"

我有一个未知的连接正在传入,通过base
DbConnection
,它可能是MySQL、SQLite、Oracle、SQL Server、Access,我不知道

我需要从模式信息中提取带引号的标识符,我已经知道了如何获取带引号的标识符,但它是在正则表达式中返回的,我对正则表达式不够熟悉,无法动态解析这些标识符

考虑到C#代码:

我需要帮助设置
LeftIdentifier
righIdentifier
的值

如果使用Oracle连接运行该代码,
quoteIdentifier
返回以下结果:

(([^\"]\"\")*)
(([^\\[]|\\]\\])*)
在这种情况下,我想将
LeftIdentifier
设置为
righidentifier
也设置为

如果使用SQL Server连接运行该代码,
quoteIdentifier
返回以下结果:

(([^\"]\"\")*)
(([^\\[]|\\]\\])*)
在这种情况下,我想将
LeftIdentifier
设置为[,将righidentifier设置为]

有人能帮我写下需要的代码吗?我所做的一切都遇到了绊脚石


注意:我从中获得了函数的信息。

为此模式启用忽略模式空白。这里,我将标识符转义为十六进制值

string pattern = #"
# \x28 (
# \x29 )
# \x22 "
# \x5B [
# \x5D ]

(?:[\x28\x29\x22\x5B\x5D])        # match but don't caputure the set above
(?<Text>[^\x28\x29\x22\x5B\x5D]+) # Get the inbetween text into Text capture group
(?:[\x28\x29\x22\x5B\x5D])        # match but don't caputure the set above    
";
字符串模式=#“
#\x28(
#\x29)
#\x22“
#\x5B[
#\x5D]
(?:[\x28\x29\x22\x5B\x5D])#匹配但不包含上述集合
(?[^\x28\x29\x22\x5B\x5D]+)#将中间文本放入文本捕获组
(?:[\x28\x29\x22\x5B\x5D])#匹配但不包含上述集合
";
或者作为一行没有忽略

string pattern = @"(?:[\x28\x29\x22\x5B\x5D])(?<Text>[^\x28\x29\x22\x5B\x5D]+)(?:[\x28\x29\x22\x5B\x5D])";
string pattern=@“(?:[\x28\x29\x22\x5B\x5D])(?[^\x28\x29\x22\x5B\x5D]+)(?:[\x28\x29\x22\x5B\x5D])”;
将匹配

“abc” [美国广播公司] (ab)


并返回名为text的命名捕获组中的文本abc。

为此模式启用忽略模式空白。这里我将标识符转义为十六进制值

string pattern = #"
# \x28 (
# \x29 )
# \x22 "
# \x5B [
# \x5D ]

(?:[\x28\x29\x22\x5B\x5D])        # match but don't caputure the set above
(?<Text>[^\x28\x29\x22\x5B\x5D]+) # Get the inbetween text into Text capture group
(?:[\x28\x29\x22\x5B\x5D])        # match but don't caputure the set above    
";
字符串模式=#“
#\x28(
#\x29)
#\x22“
#\x5B[
#\x5D]
(?:[\x28\x29\x22\x5B\x5D])#匹配但不包含上述集合
(?[^\x28\x29\x22\x5B\x5D]+)#将中间文本放入文本捕获组
(?:[\x28\x29\x22\x5B\x5D])#匹配但不包含上述集合
";
或者作为一行没有忽略

string pattern = @"(?:[\x28\x29\x22\x5B\x5D])(?<Text>[^\x28\x29\x22\x5B\x5D]+)(?:[\x28\x29\x22\x5B\x5D])";
string pattern=@“(?:[\x28\x29\x22\x5B\x5D])(?[^\x28\x29\x22\x5B\x5D]+)(?:[\x28\x29\x22\x5B\x5D])”;
将匹配

“abc” [美国广播公司] (ab)


并返回名为text的命名捕获组中的文本abc

这两个正则表达式都匹配空字符串。。。标识符真的可以是空的吗?它应该匹配空字符串,我正在寻找围绕空字符串的内容,例如“”、或[],或()这两个正则表达式都匹配空字符串。。。标识符真的可以是空的吗?它应该匹配空字符串,我在寻找围绕空字符串的东西,例如“”,或[],或(),谢谢,但我不想解析它的文本,我想解析实际正则表达式的[and]或“and”,不管怎样,重新看它,事实上,我从你的回答中明白了我需要做什么!:)@BrianDeragon观察别人的模式会给自己的模式添加新的东西。很高兴能帮上忙。:-)谢谢,但我不是在试图解析文本,我是在试图解析[and]或“and”的实际正则表达式,不管怎样,再看看它,我实际上从你的答案中找到了我需要做的事情:)@BrianDeragon观察别人的模式会给自己的模式添加新的东西。很高兴能帮上忙。:-)