使用Regex查找字符串中的几个子字符串

时间:2016-02-24 14:38:51

标签: java regex

考虑以下字符串:
<spring:message code="common.about.team1" /> <br /> <br /> <spring:message code="common.about.team2" /> <br /> <br /> <spring:message code="common.about.team3" /></p>

什么是相应的正则表达式,导致双引号中的子串,即:common.about.team1common.about.team2common.about.team3(最好是Java,但不是必需的)?

2 个答案:

答案 0 :(得分:1)

你会很好地研究模式匹配。但是,我在下面添加了一个可以帮助您解决问题的代码段。

final static String str = "<spring:message code=\"common.about.team1\" />";
final static Pattern pattern = Pattern.compile( "\"(.+?)\"" );
final static Matcher matcher = pattern.matcher( str );

public static void main( String[] args )
{
    while ( matcher.find() )
    {
        System.out.println( matcher.group( 1 ) );
    }
}

未来的好处是查看以下网站并尝试创建正则表达式字符串: http://regexr.com/3cse4

当您的正则表达式字符串正常工作时,您可以查看实现它并使其与您的应用程序一起使用。

输出:

common.about.team1
common.about.team2
common.about.team3

答案 1 :(得分:1)

以下是另一种应该起作用的模式:

public static void main(String[] args) {
    String input = "<spring:message code=\"common.about.team1\" /> <br /> <br /> <spring:message code=\"common.about.team2\" /> <br /> <br /> <spring:message code=\"common.about.team3\" /></p>";

    Pattern p = Pattern.compile("\"([^\"]+)\"");
    Matcher m = p.matcher(input);

    List<String> matches= new ArrayList<String>();
    while (m.find()) {
        matches.add(m.group());
    }
    System.out.println(matches);
}

输出:

["common.about.team1", "common.about.team2", "common.about.team3"]