[英]Regular Expression without braces
我有以下示例案例:
我想形成一个(仅一个)正则表达式模式,上面的示例传递给它,返回"Sample"
和"10,25"
。
注意:输入字符串不包含引号。
我想出了以下表达式(?<=\\[)(.*?)(?=\\])
,它满足第二种情况,并且只返回"10,25"
但是当第一种情况匹配时,返回我空白。 我想退还“样品”吗? 谁能帮我。
C#。
据我所知,下面的正则表达式应该有所帮助:
Regex regex = new Regex(@"^\w+|[[](\w)+\,(\w)+[]]$");
这将匹配多个单词,或2个单词(字母数字),中间用逗号隔开,并在方括号内。
在这里,使用正向后的小正则表达式,有时候这些非常方便
正则表达式
(?<=^|\[)([\w,]+)
测试字符串
Sample
[10,25]
结果
比赛1
Sample
比赛2
10,25
尝试在regex101.com
如果原始字符串中包含"
,请使用此正则表达式,它也会查找"
标记,您可以选择删除^|
从查找开始,如果始终包含"
标记,或者如果您的文本具有带有和不带有"
标记的组合,则可以选择保留它
正则表达式
(?<=^|\[|\")([\w,]+)
尝试在regex101.com
一个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&bye,25 | 35”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.