即使在在線閱讀大量教程之後,我仍然很難在Java中使用正則表達式。我試圖提取部分的字符串,以便稍後在我的應用程序中使用。使用正則表達式提取特定模式
這裏有可能的字符串的示例接收的:
53248 <CERCLE> 321 211 55 </CERCLE>
57346 <RECTANGLE> 272 99 289 186 </RECTANGLE>
第一個數字是要被提取作爲序列號。 <>之間的詞也將被提取。然後,中間的數字序列也是如此。
這裏是我的模式:
"(\\d+)\\s*<(\\w+)>\\s*((\\d+\\s*)+)\\s*</\\w*>.*"
這是迄今爲止對我的方法的代碼:
public decompose(String s) throws IllegalArgumentException {
Pattern pattern = Pattern.compile(PATTERN);
Matcher matcher = pattern.matcher(s);
noSeq = Integer.parseInt(matcher.group(1));
type = typesFormes.valueOf(matcher.group(2));
strCoords = matcher.group(3).split(" ");
}
問題是,當我運行的代碼,我所有的匹配組是在-1出於某種原因(未發現我猜)。我一直對此感到震驚,歡迎提供任何建議:)謝謝。
我想你需要首先運行'matcher.find()'。我剛纔有一個類似於這個問題:http://stackoverflow.com/questions/23657575/java-regex-to-parse-any-number-of-markdown-style-links – 2rs2ts
更具體地說,要麼' matcher.find()','matcher.matches()','matcher.lookingAt()'。請參閱[Matcher](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html)javadoc。 – ajb