不带大括号的正则表达式
本文关键字:正则表达式 | 更新日期: 2023-09-27 18:15:43
我有以下示例案例:
- 1( "示例">
- 2( "[10,25]">
我想形成一个(只有一个(正则表达式模式,上面的例子传递给它,返回"Sample"
和"10,25"
。
注意:输入字符串不包括引号。
我得到了以下表达式(?<='[)(.*?)(?='])
,这满足了第二种情况,并仅检索到"10,25"
,但当第一种情况匹配时,它将返回空白。我想退回"样品"?有人能帮我吗?
C#。
这里是一个使用正向查找的小正则表达式,有时这些正则表达式非常方便
Regex
(?<=^|'[)(['w,]+)
测试字符串
Sample
[10,25]
结果
匹配1
- [0-6]
Sample
匹配2
- [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