m.find()
返回true时返回false。
solrQueries[i]
包含字符串:
"fl=trending:0,id,business_attr,newarrivals:0,bestprice:0,score,mostviewed:0,primarySortOrder,fastselling:0,modelNumber&defType=pedismax&pf=&mm=2<70%&bgids=1524&bgboost=0.1&shards.tolerant=true&stats=true"
代码是:
Pattern p = Pattern.compile("&mm=(\\d+)&");
for(int i=0; i<solrQueries.length; i++) {
Matcher m = p.matcher(solrQueries[i].toLowerCase());
System.out.println(p.matcher(solrQueries[i].toLowerCase()));
if (m.find()) {
System.out.println(m.group(1));
mmValues[i] = m.group(1);
}
答案 0 :(得分:1)
喔,
模式p = Pattern.compile(“(?i)&amp; mm =(\ d +)”);
现在工作正常。
谢谢你,@WiktorStribiżew
答案 1 :(得分:0)
您执行了m.find()
两次(首先是System.out.println(m.find());
,然后是if (m.find())
)。而且由于只有一场比赛 - 即使正则表达式匹配 - 在第二轮比赛后你也什么也得不到。
使用
public String[] fetchMmValue(String[] solrQueries) {
String[] mmValues = new String[solrQueries.length];
Pattern p = Pattern.compile("(?i)&mm=(\\d+)");
for(int i=0; i<solrQueries.length; i++) {
Matcher m = p.matcher(solrQueries[i]);
if (m.find()) {
// System.out.println(m.group(1)); // this is just for debugging
mmValues[i] = m.group(1);
}
return mmValues;
}
如果您想在&
之后获取&mm=
以外的所有字符,请使用其他正则表达式:
"&mm=([^&]+)"
其中[^&]+
匹配除&
以外的1个或多个字符。