C# 基于正则表达式[].[]和[].[]从[].[]+拆分字符串;[].[]
我需要根据某些条件拆分字符串 这是我的输入字符串 “([abcd_1].[列]+[abcd_2].[列]/[abcd_3].[列]” 输入字符串将只包含 A-Z A-Z下划线(u)和数字(0-9) 我想要的是 [abcd_1]。[列] [ab_cd_2]。[栏目] [ab_cd_3]。[栏目] 我不确定我必须使用什么条件 到目前为止,我尝试过这个方法,但无法构建正则表达式来拆分精确的字符串C# 基于正则表达式[].[]和[].[]从[].[]+拆分字符串;[].[],c#,.net,regex,asp.net-mvc,C#,.net,Regex,Asp.net Mvc,我需要根据某些条件拆分字符串 这是我的输入字符串 “([abcd_1].[列]+[abcd_2].[列]/[abcd_3].[列]” 输入字符串将只包含 A-Z A-Z下划线(u)和数字(0-9) 我想要的是 [abcd_1]。[列] [ab_cd_2]。[栏目] [ab_cd_3]。[栏目] 我不确定我必须使用什么条件 到目前为止,我尝试过这个方法,但无法构建正则表达式来拆分精确的字符串 Regex rgx = new Regex(@"\[(.*?)\]"); String r
Regex rgx = new Regex(@"\[(.*?)\]");
String regexpString = "([abcd_1].[column] + [ab_cd_2].[column]) / [ab_cd_3].[column]";
MatchCollection mc = rgx.Matches(regexpString);
请在此建议您可以使用
\[[^][]*](?:\.\[[^][]*])*
看
或者你的方式与懒惰点:
关键是,您可以添加一个带有
和初始模式的非捕获组,并对其应用*
(零或更多)量词
以下是一份:
图案说明:
-文字\[
[
-零个或多个字符,而不是[^][]*
和[
(可以替换为]
-零个或多个字符,而不是换行符,但尽可能少以返回有效匹配)*?
-一个文本]
(不必在char类之外转义它,但可以)]
-零次或多次((?:\。\[[^][]*])*
结尾)出现(以下子模式使用*
进行分组):(?:…)
-文字点(必须在字符类之外转义\.
)[…]
-a\[
[
-除[^][]*
和[
以外的零个或多个字符]
-a]
]
无法识别的转义序列
@AmeyaDeshpande:不知道你是怎么尝试的。我测试了两个表达式。看测试。是的,它成功了。我忘记了字符串开头的@
符号,非常感谢。对于C#regex,逐字字符串文字通常是最方便使用的字符串文字类型,当您有太多需要转义的特殊字符时,不要忘记@
。yup会记住这一点
Regex rgx = new Regex(@"\[.*?](?:\.\[.*?])*");
String input = "([abcd_1].[column] + [ab_cd_2].[column]) / [ab_cd_3].[column]";
MatchCollection matches = rgx.Matches(input);
foreach (Match m in matches)
Console.WriteLine(m.Value);