Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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#_.net_Regex_Asp.net Mvc - Fatal编程技术网

C# 基于正则表达式[].[]和[].[]从[].[]+拆分字符串;[].[]

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

我需要根据某些条件拆分字符串

这是我的输入字符串

“([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 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);