Javaで正規表現の練習をしています。
プログラムの実行結果でわからないところがあったので教えてください。
lang
1import java.util.regex.Matcher; 2import java.util.regex.Pattern; 3 4public class Practice6 { 5 6 public static void main(String[] args) { 7 String words[] = { "JavaSprict", "xxJavayyJava", "1a2", "123" }; 8 String patterns[] = { "^Java.*", "^\\D*" }; 9 10 for (String pattern_word : patterns) { 11 Pattern pattern = Pattern.compile(pattern_word); 12 System.out.println("=====" + pattern_word + "====="); 13 System.out.println("---matches---"); 14 for (String word : words) { 15 Matcher matcher = pattern.matcher(word); 16 if (matcher.matches()) { 17 System.out.println(matcher.group()); 18 } 19 } 20 System.out.println("----find----"); 21 for (String word : words) { 22 Matcher matcher = pattern.matcher(word); 23 if (matcher.find()) { 24 System.out.println(word + " [" + matcher.group() + "]"); 25 } 26 } 27 System.out.println(); 28 } 29 30 } 31} 32
「実行結果」
=====^Java.*=====
---matches---
JavaSprict
----find----
JavaSprict [JavaSprict]
=====^\D*=====
---matches---
JavaSprict
xxJavayyJava
----find----
JavaSprict [JavaSprict]
xxJavayyJava [xxJavayyJava]
1a2 []
123 []
疑問に思ったことは、正規表現「^\Dx」を含む文字列に、
実行結果の最後の2行からわかるように「1a2」と「123」が含まれていることです。
しかも[]の中にマッチした文字列が表示されるはずなのになにも入っていません。
なぜこうなるのか教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/12 12:34