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
语句中调用它,这样你就知道匹配是否成功了。