次の文字列があるとします。
id: 1 name: Joe age: 27 id: 2 name: Mary age:22
そして、「age:」の後のすべてのトークンを抽出したいのですが、文字列「age:」自体は抽出したくありません。
だから私は、Matcher
「group()
年齢:27」と「年齢:22」ではなく、27と22を返すようにしたい
Java Regex 構文でこの命令を指定する方法はありますか?これは、正規表現の基礎を学んだ Perl の構文とはかなり異なるようです。
これは私のコードです:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegExTest
{
public static void main(String[] args)
{
Pattern namePtrn = Pattern.compile("age: *\\w*");
String data = "id: 1 name: Joe age:27 id: 2 name: Mary age:22";
Matcher nameMtchr = namePtrn.matcher(data);
while(nameMtchr.find())
{
String find = nameMtchr.group();
System.out.println ("\t" + find);
}
}
}
Perl では、{} を使用して抽出したいパターンの部分を制限できます
while($text =~ m/(age:{\w+})/g)
{
my $find = $1;
if($find)
{
print "\nFIND = ".$find;
}
}
戻るだろう
FIND = 27
FIND = 22
{} を age のように入れると
while($text =~ m/({age:\w+})/g)
それは戻るだろう
FIND = age: 27
FIND = age:22
そこで、Perl の {} のようなものを Java で探しています。