如果字符串在字符串后面,如何检查Pattern.compile?例如,我有String:
"I love programming a lot!"
当且仅当前面有单词programming
或love
时,如何才输出单词like
?这是什么样的正则表达式?
答案 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
}