[英]m.find() returns false when it should return true
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);
}
哦,
模式 p = Pattern.compile("(?i)&mm=(\\d+)");
現在工作正常。
謝謝,@Wiktor Stribiżew
您執行了m.find()
兩次(首先在System.out.println(m.find());
然后在if (m.find())
)。 而且由於只有 1 場比賽 - 即使正則表達式匹配 - 在第二次運行后您將一無所獲。
用
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 個或多個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.