没有大括号的正则表达式

时间:2014-07-31 09:47:57

标签: c# regex

我有以下示例案例:

  • 1)" Sample"
  • 2)" [10,25]"

我想形成一个(只有一个)正则表达式模式,上面的例子将传递给我"Sample""10,25"

注意:输入字符串不包括引号。

我提出了以下表达式(?<=\[)(.*?)(?=\]),这满足了第二种情况并且只回溯了我"10,25"但是当第一种情况匹配时,它将空白返回。我想&#34; Sample&#34;要退回?谁能帮我。

C#。

3 个答案:

答案 0 :(得分:1)

据我所知,下面的正则表达式应该有所帮助:

Regex regex = new Regex(@"^\w+|[[](\w)+\,(\w)+[]]$");

这将匹配多个单词,或者用逗号分隔并在方括号内的2个单词(字母数字)。

答案 1 :(得分:1)

这里你去,一个使用正面lookbehind的小正则表达式,有时这些非常方便

<强>正则表达式

(?<=^|\[)([\w,]+)

测试字符串

Sample
[10,25]

<强>结果

MATCH 1

  1. [0-6] Sample
  2. MATCH 2

    1. [8-13] 10,25
    2. 尝试regex101.com


      如果您的原始字符串中包含",请使用此正则表达式,这也将查找"标记,如果{{1},您可以选择从查找中删除^|如果你的文字有和没有"标记的组合,你可以选择保留标记,或者你可以选择保留标记

      <强>正则表达式

      "

      尝试regex101.com

答案 2 :(得分:0)

一个Java示例:

//          String input = "Sample"; 
            String input = "[10,25]";
            String text = "[^,\\[\\]]+";

            Pattern pMod = Pattern.compile("(" + text + ")|(?>\\[(" + text + "," + text + ")\\])");
            Matcher mMod = pMod.matcher(input);
            while (mMod.find()) {
                if(mMod.group(1) != null) {
                    System.out.println(mMod.group(1));
                }
                if(mMod.group(2)!=null) {
                    System.out.println(mMod.group(2));
                }               
            }

如果输入是“[hello&amp; bye,25 | 35]”,则输出为hello&amp; bye,25 | 35