Java Regex匹配重复的关键字

时间:2014-09-11 14:05:42

标签: java regex

如果标题是相同的姓氏(即Smith Vs Smith或John Vs John等),我需要过滤文件。 我正在将整个文档转换为字符串并根据正则表达式验证该字符串。 任何人都可以帮我写上述案例的正则表达式。

3 个答案:

答案 0 :(得分:2)

Backreferences

示例:(\w+) Vs \1

答案 1 :(得分:0)

如果一个人完全理解你的问题:你有一个像这样的字符串“X Vs Y”(其中X和Y是两个名字),你想知道X == Y。

在这种情况下,一个简单的(\ w +)正则表达式可以做到:

    String input = "Smith Vs Smith";

    // Build the Regex 
    Pattern p = Pattern.compile("(\\w+)");
    Matcher m = p.matcher(input);

    // Store the matches in a list
    List<String> str = new ArrayList<String>();
    while (m.find()) {
        if (!m.group().equals("Vs"))
        {
            str.add(m.group());
        }
    }

    // Test the matches
    if (str.size()>1 && str.get(0).equals(str.get(1)))
        System.out.println(" The Same ");
    else System.out.println(" Not the Same ");

答案 2 :(得分:0)

(\w+).*\1

这意味着:一个包含1个或多个字符的单词,作为第1组签名,后跟任何内容,然后是任何第1组。

更多解释:分组(正则表达式的包围部分)和引用表达式中定义的组(\ 1在此处执行此操作)。

示例:

String s = "Stewie is a good guy. Stewie does no bad things";
s.find("(\\w+).*\\1") // will be true, and group 1 is the duplicated word. (note the additional java escape);