import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "((?:(\\w{1}|\\d).+([\\.?\\!\\)\\s]|\\b)?)+)|\\s?([\\w ]+[\\.\\?!] )";
final String string = "What about... this sentence?\n\n"
+ "Here's a list of things:\n\n"
+ "* one,\n"
+ " continued\n"
+ " - two.\n"
+ "* three,\n"
+ " - four\n"
+ " - five\n\n"
+ "1. Numbered one,\n"
+ " continued\n"
+ "2. numbered two.\n"
+ "3. numbered three.\n\n"
+ "every sentence starts with a capital. let's have that rule. but\n"
+ "what is a sentence?\n\n"
+ "42 is the answer.\n\n"
+ "I got a memory leak of the whole client-chat direcrive. sdf\n\n"
+ "this is a sentence\n"
+ "that continues down here. while this is a different sentence. (can we find sentences in brackets?)\n\n"
+ "Sentences sometimes (but not always), contain bracketed sections, e.g. as in this sentence; ok?\n\n"
+ "a sentence with no final punctuation should end if double-spaced\n\n\n"
+ " authorize.net Node.js filename-ish words & such don't terminate a sentence\n\n"
+ "I want to move my website from example.net to example.com blah blah blah.\n\n"
+ "I want to move my website from example.net to example.com blah blah blah\n\n"
+ "I want to move my website from example.net to _xCodexBlockxPlacexHolderx_\n"
+ " example.com blah blah blah.\n\n"
+ "_xCodexBlockxPlacexHolderx_\n\n"
+ "More than a 10% with 1.5 to 2 global load, etc.) to 1st level Flume collectors.\n\n"
+ "I am using AngularJS 1.3.0, but even after upgrade to 1.4.9 it still happens. (That should be just ONE sentence.)\n\n"
+ "A simple sentence, ending with punctuation.\n"
+ "A sentence without end punctuatione, ending with double-space\n\n"
+ "\"A sentence in quotes.\" \"Ok with that?\" \"punctuation after the close quote\"!\n"
+ "###This is a heading\n\n"
+ "Text in a link [is part of the sentence][1].\n\n"
+ "Another sentence. And another sentence? End of file!";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | 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