匹配正则表达式中的第一次出现

时间:2015-07-25 05:48:46

标签: java regex

我必须匹配“JJ”之间的字符串。从后面第二次出现“,”。

e.g:

In Mackintosh v. Watkins (1904) 1 C L J 31, Brett and Mookerjee, JJ.

所需的输出:Brett and Mookerjee

目前我使用的是第一个“,”与JJ匹配。

我的模式:

",.*.[^,]*JJ\b"

2 个答案:

答案 0 :(得分:2)

您可以使用环顾四周或捕捉群组。

  • 展望未来的解决方案

    (?<=, )[^,]*(?=,[^,]*JJ\b)
    
    • (?<=, )回顾一下,检查字符串是否前面有,
    • (?=,[^,]*JJ\b)展望未来。检查字符串是否后跟,,然后检查,JJ
    • 以外的任何内容

    Regex Demo

  • 捕获goups

    ,([^,]*),[^,]*JJ\b
    

    Regex Demo

    此处捕获组1将包含字符串Brett and Mookerjee

答案 1 :(得分:0)

使用捕获组。

Matcher m = Pattern.compile(",\\s*([^,]+),[^,]*\\bJJ\\b").matcher(s);
if(m.find())
{
System.out.println(m.group(1));
}

DEMO