import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^.{0,1}(陪我一起)?听?你?(再|快|先)?能?(给我)?唱?(啊|一?个|吧|出来|一?首)?歌?(给我听|来听听)?(吧|啊|哇|呗|呀)?((好(么|嘛|吗))|好不好|小万|亲爱的|这么难)?.{0,1}$";
final String string = "你先唱给我听好吗\n"
+ "快唱啊\n"
+ "快唱啊你\n\n"
+ "你唱吧\n"
+ "你唱一个\n"
+ "唱一首吧亲爱的\n"
+ "再唱一首\n"
+ "你快唱吧\n"
+ "你能唱出来吗\n"
+ "唱出来\n"
+ "唱一个给我听呗好不好\n"
+ "快唱\n"
+ "唱\n"
+ "唱吧\n"
+ "你唱啊\n"
+ "唱一个嘛\n"
+ "唱一个啊\n"
+ "来听你唱歌\n"
+ "再给我唱一首呗\n"
+ "唱歌小万\n"
+ "你唱首歌给我听呗\n"
+ "陪我一起唱歌好吗\n"
+ "听你唱歌这么难\n"
+ "唱首歌来听听\n\n\n"
+ "你唱歌好好听啊再给我唱一首呗\n\n"
+ "我现在就很不开心你唱首歌给我听呗\n\n"
+ "会不会唱歌,唱首歌来听听";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html