Java中如何获取匹配的字符串?
嗯..我不是java开发人员,但我正在编辑java插件。
所以..基本上,这个插件匹配 ^(/$)|(/cn/(.*)+$) 模式并重定向到用户。
以下是插件的代码片段。
if(uriPattern != null) {
Pattern pattern = Pattern.compile(uriPattern);
Matcher matcher = pattern.matcher(request.getRequestURI());
matcher.find();
matchURI = matcher.matches();
}
if (matchURI && redirectTool.shouldRedirectRequest()) {
//do something
}
如您所见,该模式与 / 或 /cn/[EVERYTHING] url 匹配。当 / 匹配时如何获取空字符串,当 /cn/[EVERYTHING] 匹配时如何获取 cn?
我尝试了 matcher.group()、matcher.start() 和 matcher.end()...
Um..I'm not a java developer, but I'm editing a java plugin.
So.. basically, this plugin matches ^(/$)|(/cn/(.*)+$) pattern and redirect to a user.
The following is code snippet from the plugin.
if(uriPattern != null) {
Pattern pattern = Pattern.compile(uriPattern);
Matcher matcher = pattern.matcher(request.getRequestURI());
matcher.find();
matchURI = matcher.matches();
}
if (matchURI && redirectTool.shouldRedirectRequest()) {
//do something
}
as you see, the pattern matches either / or /cn/[EVERYTHING] url. How do I get empty string when / is matched and cn when /cn/[EVERYTHING] is matched?
I tried matcher.group(), matcher.start(), and matcher.end()...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您的第一个子模式匹配时,
matcher.group(1)
为/
,matcher.group(2)
为/cn/whatever< /code> 当你的第二个子模式匹配时。
而且您似乎不需要
+
和嵌套括号。我会把你的表达式写得更简单:^(/$)|(/cn/.*$)
matcher.group(1)
is/
when your first subpattern matches,matcher.group(2)
is/cn/whatever
when your second subpattern matches.And you don't seem to need the
+
and nested parens. I'd write your expression simpler:^(/$)|(/cn/.*$)