如果一个字符串出现在字符串之后,如何检查Pattern?

时间:2016-05-02 03:09:10

标签: java regex

如果字符串在字符串后面,如何检查Pattern.compile?例如,我有String: "I love programming a lot!" 当且仅当前面有单词programminglove时,如何才输出单词like?这是什么样的正则表达式?

4 个答案:

答案 0 :(得分:1)

最简单的方法是使用

.*?(?:love|like).*(programming)

<强> Regex Demo

使用lookaheads

(?=.*?(love|like).*?(programming))

<强> Regex Demo

Java代码

String line = "I love programming a lov lot!"; 
String x = "programming";
String pattern = ".*?(?:love|like).*(" + x + ")";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

while (m.find()) {
    String tmp = m.group(1);
    System.out.println(tmp);
}

<强> Ideone Demo

答案 1 :(得分:1)

不要使用模式,只需使用replaceAll()

String lovedThing = str = str.replaceAll(".*(love|like)\\s+(\\S+).*", "$2");

这匹配整个字符串,将其替换为第2组中捕获的内容,有效地提取&#34;提取&#34;目标,匹配为&#34;非空白字符&#34;。

答案 2 :(得分:0)

这是我认为这样做的文章方式

   String s = "I love programming a lot!";

    if (s.contains("like") || s.contains("love")) {
        System.out.println(s);
    }

答案 3 :(得分:0)

String s = "I love programming a lot!";
String condition1 = s.indexOf("love");
String condition2 = s.indexOf("like");
String condition3 = s.indexOf("programming");

    if (condition1 < condition3 || condition2 < condition3) {
        System.out.println("programming"); //or get value if not hardcoded
    }