Java 如何在正则表达式中获取通配符的匹配部分?

Java 如何在正则表达式中获取通配符的匹配部分?,java,regex,Java,Regex,例如: Pattern pattern = Pattern.compile("a(.*)b"); Matcher matcher = pattern.matcher("a19203b"); matcher.find(); System.out.println(matcher.group()); 这将打印出整个字符串(a19203b)。我只需要19203。我怎样才能在Java中得到这个 (例如,在mod_重写规则中,我会执行类似于RewriteRule article/(*)article.ph

例如:

Pattern pattern = Pattern.compile("a(.*)b");
Matcher matcher = pattern.matcher("a19203b");
matcher.find();
System.out.println(matcher.group());
这将打印出整个字符串(
a19203b
)。我只需要
19203
。我怎样才能在Java中得到这个


(例如,在mod_重写规则中,我会执行类似于
RewriteRule article/(*)article.php?id=$1
的操作,其中
$1
是我需要的字符串)

找到了解决方案。使用
matcher.group(1)
而不是
matcher.group()


找到了解决办法。使用
matcher.group(1)
而不是
matcher.group()


使用lookbehinds/lookaheads:

Pattern regex = Pattern.compile("(?<=a).*(?=b)");

Pattern regex=Pattern.compile((?使用lookbehinds/lookaheads:

Pattern regex = Pattern.compile("(?<=a).*(?=b)");

Pattern regex=Pattern.compile((?True,但不要调用
find()
,因为这样会产生副作用。您应该始终在
if
while
语句中调用它,以便知道匹配是否实际成功。True,但不要调用
find()
只是因为它的副作用。你应该总是在
if
while
语句中调用它,这样你就知道匹配是否成功了。