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