我有以下示例案例:
我想形成一个(只有一个)正则表达式模式,上面的例子将传递给我"Sample"
和"10,25"
。
注意:输入字符串不包括引号。
我提出了以下表达式(?<=\[)(.*?)(?=\])
,这满足了第二种情况并且只回溯了我"10,25"
但是当第一种情况匹配时,它将空白返回。我想&#34; Sample&#34;要退回?谁能帮我。
C#。
答案 0 :(得分:1)
据我所知,下面的正则表达式应该有所帮助:
Regex regex = new Regex(@"^\w+|[[](\w)+\,(\w)+[]]$");
这将匹配多个单词,或者用逗号分隔并在方括号内的2个单词(字母数字)。
答案 1 :(得分:1)
这里你去,一个使用正面lookbehind的小正则表达式,有时这些非常方便
<强>正则表达式强>
(?<=^|\[)([\w,]+)
测试字符串
Sample
[10,25]
<强>结果强>
MATCH 1
Sample
MATCH 2
10,25
如果您的原始字符串中包含"
,请使用此正则表达式,这也将查找"
标记,如果{{1},您可以选择从查找中删除^|
如果你的文字有和没有"
标记的组合,你可以选择保留标记,或者你可以选择保留标记
<强>正则表达式强>
"
答案 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