Javaの正規表現とMatcherクラスを組み合わせた使い方が理解できず、教えていただけないでしょうか?
・やりたいこと
以下のようなhtml文のうち
2016年11月22日
370
370
のみを抜き出したい
----------コード-----------------------
String str = "<td>2016年11月22日</td><td>370</td><td>370</td><td>2016年11月21日</td><td>1000</td><td>1000</td>";
String regex ="([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日)(.?)([0-9|,]+)(.?)([0-9|,]+)";
Pattern p2 = Pattern.compile(regex);
Matcher m2 = p2.matcher(str);
while(m2.find()){ day= m2.group(1); num1= m2.group(3); num2= m2.group(5);
・結果
なぜかhtmlの後ろ側に位置する以下の方が取得されてしまう
2016年11月21日
1000
1000
どこに問題があるのかどうか教えていただけないでしょうか、よろしくお願いいたします。
追記
環境はMacOS 10.12.1, Java8, Eclipse4.6.0です。
例えば(.?)のうち最後の部分を(.)に変えると、
String regex ="([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日)(.?)([0-9|,]+)(.)([0-9|,]+)";
そしてnum2= m2.group(5)を(4)に変えると
while(m2.find()){
day= m2.group(1);
num1= m2.group(3);
num2= m2.group(4);
今度は結果が
2016年11月22日
370
となります。最後の370さえ取得できればよいのですが、この挙動が理解できず。。
わかりずらい表現で申しわけありません。
回答2件
あなたの回答
tips
プレビュー