考虑您有以下字符串:
id: 1 name: Joe age: 27 id: 2 name: Mary age:22
并且您想在“age:”之后提取每个标记,但不是字符串“age:”本身。
所以我希望我Matcher
的 'sgroup()
返回 27 和 22 而不是 "age: 27" 和 "age:22"
有没有办法在 Java Regex 语法中指定这条指令,这似乎与 Perl 中的指令完全不同,我在 Perl 中学习了 Regex 基础知识?
这是我的代码:
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
如果我把 {} 放在年龄左右
while($text =~ m/({age:\w+})/g)
它会回来
FIND = age: 27
FIND = age:22
所以我正在寻找类似 Perl 的 {} 但在 Java 中的东西。