不带大括号的正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:15:43

我有以下示例案例:

  • 1( "示例">
  • 2( "[10,25]">

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

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

我得到了以下表达式(?<='[)(.*?)(?=']),这满足了第二种情况,并仅检索到"10,25",但当第一种情况匹配时,它将返回空白。我想退回"样品"?有人能帮我吗?

C#。

不带大括号的正则表达式

这里是一个使用正向查找的小正则表达式,有时这些正则表达式非常方便

Regex

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

测试字符串

Sample
[10,25]

结果

匹配1

  1. [0-6]Sample

匹配2

  1. [8-13]10,25

尝试regex101.com


如果"包含在原始字符串中,请使用此正则表达式,这也将查找"标记,如果始终包含"标记,则可以选择从查找中删除^|,或者如果文本具有带和不带"标记的组合,则可以选择保持原样

Regex

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

尝试regex101.com

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

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

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

一个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&bye,25|35]",那么输出是hello&aamp;再见,25 | 35