[英]Java regex - get specific part of string
我正在尝试访问遵循模式的多个字符串的某个部分。
这是我正在尝试做的一个例子。
String s = "Hello my name is Joe";
if(Pattern.matches(s,"Hello my name is ([\\w]*)"))
{
System.out.println("Name entered: $1");
}
但是,我的代码永远不会进入“if-statement”
将参数交换到matches
方法,您的if
将起作用(正则表达式是第一个参数,而不是第二个参数)。
但是,您仍然不会使用$1
打印第一个捕获组。 为此:
String s = "Hello my name is Joe";
Matcher m = Pattern.compile("Hello my name is ([\\w]*)").matcher(s);
if(m.matches())
{
System.out.println("Name entered: " + m.group(1));
}
我想你正在寻找这个:
final String s = "Hello my name is Joe";
final Pattern p = Pattern.compile("Hello my name is (\\w++)");
final Matcher m = p.matcher(s);
if (m.matches()) {
System.out.printf("Name entered: %s\n", m.group(1));
}
这将捕获\\w++
组值,仅当p
匹配String的整个内容时。 我用\\w++
替换了\\w*
以排除零长度匹配并消除回溯。
有关进一步参考,请参阅The Java Tutorial> Essential Classes - Lesson:Regular Expressions 。
尝试使用Matcher类,有关Java 中正则表达式的更多信息,请参阅此页面http://java.sun.com/developer/technicalArticles/releases/1.4regex/
因为你有向后的Pattern.matches()
参数。
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
此外,您不需要一组(括号)。 此外,您将需要使用Matcher
类并通过group()
方法获取括号引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.