雖然提取輸入串指定的數據,一個使用Matcher.group(字符串組名) http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html有沒有更好的方法來使用Matcher中的group()提取名稱值?
在下面的代碼,receivedData是具有的基團的名稱的散列映射。我必須遍歷它才能獲取每個名稱,然後調用組(名稱)。 散列表必須單獨維護,並且可能會錯誤地輸入名稱或與正則表達式中的名稱不同步,因爲它們中有大量名稱。
String patternOfData = "On (day) I ate (mealName) at (restaurant) where they had a deal (entree) for only (price)";
編譯模式後,
Pattern dataExtractionPattern = Pattern.compile(patternOfData);
Matcher matcher = dataExtractionPattern.matcher(receivedDataString);
boolean b = matcher.matches();
if (!b) {
return false;
}
for (String key : receivedData.keySet()) {
String dataValue;
dataValue = matcher.group(key);
receivedData.put(key, dataValue);
}
return true;
難道不更好,如果我們不得不返回兩個名稱和值一起?像Map.entry group();
或者有另一種方法可以做到這一點嗎?
該文檔不清楚命名捕獲組。 「以(?開頭的組是純粹的非捕獲組,不捕獲文本並且不計入組總數或命名捕獲組。」http://docs.oracle.com/javase/7/docs /api/java/util/regex/Pattern.html#groupname – likejiujitsu
請參閱[此鏈接](https://blogs.oracle.com/xuemingshen/entry/named_capturing_group_in_jdk7)。 –
Javadocs for Pattern「(? X)\t。 .... X,作爲一個命名捕獲組「。好吧,我明白你爲什麼把一個」\ S「捕獲非空白字符 –
likejiujitsu