import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "[^\\n.!?]*((sorry)\\b[^.!?:\\n\\r]+\\b((bad|my|poor) english)|(english[^.!?:\\n\\r]+)\\b(tongue|language))\\b[^.!?:\\n\\r]*(?:[.!?:_*])*";
final String string = "About 30,500 instances of \"sorry bad english\". Once a post has been properly edited, this phrase is just noise, and should be deleted.\n\n"
+ "Some words. sorry for bad english. More text.\n\n"
+ "Sorry about my bad english. More text.\n\n"
+ "I'm sorry my english sucks. More text.\n\n"
+ "Sorry for my bad English . More text.\n\n"
+ "sorry for my bad english, _i explained it with everything i can._ More text.\n\n"
+ "Blah de blah de blah. ***And sorry for my bad english..***\n\n"
+ "Sorry for my English. More text.\n\n"
+ "Sorry for my english and thanks! More text.\n\n"
+ "I'm sorry for my poor english . More text.\n\n"
+ "And sorry for my english. More text.\n\n"
+ "## WBN\n\n"
+ "And sorry if my english got a little confusing... \n\n"
+ "pss: sorry, bad english\n\n"
+ "sorry, english isn't my main language =/.\n\n"
+ " English isn't my first language,\n\n"
+ "English isn't my native language.\n\n"
+ "English isn't my mother language.\n\n"
+ "As english isn't my mother tongue,\n\n"
+ "I don't know if I made myself clear as english isn't my native language,\n\n"
+ "English isn't my primary language,so \n\n"
+ "My English isn't mother tongue,\n\n"
+ "I hope u understand me, english isn't my mother tongue.\n\n"
+ "I'm sorry for my grammar or spelling mistakes, \n\n"
+ "First, sorry if my english isn't that great, this isn't my mother tongue. \n\n"
+ "Sorry for the bad English, English isn't my mother tongue so I'm trying to make the best of it.\n\n"
+ "Sorry for my bad English, it is not my native tongue \n\n"
+ "## Leave:\n\n"
+ "It is a sorry excuse for it.\n\n"
+ "He put some English on the ball.\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
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