繁体   English   中英

Java正则表达式 - 获取字符串的特定部分

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM