2015-09-07 11:44:36 -06:00
|
|
|
// strings/StartEnd.java
|
2015-12-15 11:47:04 -08:00
|
|
|
// (c)2016 MindView LLC: see Copyright.txt
|
2015-11-15 15:51:35 -08:00
|
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
|
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
2015-06-15 17:47:35 -07:00
|
|
|
import java.util.regex.*;
|
|
|
|
|
|
|
|
public class StartEnd {
|
|
|
|
public static String input =
|
|
|
|
"As long as there is injustice, whenever a\n" +
|
|
|
|
"Targathian baby cries out, wherever a distress\n" +
|
2016-01-25 18:05:55 -08:00
|
|
|
"signal sounds among the stars ... We'll be there.\n"+
|
2015-06-15 17:47:35 -07:00
|
|
|
"This fine ship, and this fine crew ...\n" +
|
|
|
|
"Never give up! Never surrender!";
|
|
|
|
private static class Display {
|
|
|
|
private boolean regexPrinted = false;
|
|
|
|
private String regex;
|
|
|
|
Display(String regex) { this.regex = regex; }
|
|
|
|
void display(String message) {
|
|
|
|
if(!regexPrinted) {
|
2015-11-03 12:00:44 -08:00
|
|
|
System.out.println(regex);
|
2015-06-15 17:47:35 -07:00
|
|
|
regexPrinted = true;
|
|
|
|
}
|
2015-11-03 12:00:44 -08:00
|
|
|
System.out.println(message);
|
2015-06-15 17:47:35 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
static void examine(String s, String regex) {
|
|
|
|
Display d = new Display(regex);
|
|
|
|
Pattern p = Pattern.compile(regex);
|
|
|
|
Matcher m = p.matcher(s);
|
|
|
|
while(m.find())
|
|
|
|
d.display("find() '" + m.group() +
|
|
|
|
"' start = "+ m.start() + " end = " + m.end());
|
|
|
|
if(m.lookingAt()) // No reset() necessary
|
|
|
|
d.display("lookingAt() start = "
|
|
|
|
+ m.start() + " end = " + m.end());
|
|
|
|
if(m.matches()) // No reset() necessary
|
|
|
|
d.display("matches() start = "
|
|
|
|
+ m.start() + " end = " + m.end());
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
for(String in : input.split("\n")) {
|
2015-11-03 12:00:44 -08:00
|
|
|
System.out.println("input : " + in);
|
2015-06-15 17:47:35 -07:00
|
|
|
for(String regex : new String[]{"\\w*ere\\w*",
|
|
|
|
"\\w*ever", "T\\w+", "Never.*?!"})
|
|
|
|
examine(in, regex);
|
|
|
|
}
|
|
|
|
}
|
2015-09-07 11:44:36 -06:00
|
|
|
}
|
|
|
|
/* Output:
|
2015-06-15 17:47:35 -07:00
|
|
|
input : As long as there is injustice, whenever a
|
|
|
|
\w*ere\w*
|
|
|
|
find() 'there' start = 11 end = 16
|
|
|
|
\w*ever
|
|
|
|
find() 'whenever' start = 31 end = 39
|
|
|
|
input : Targathian baby cries out, wherever a distress
|
|
|
|
\w*ere\w*
|
|
|
|
find() 'wherever' start = 27 end = 35
|
|
|
|
\w*ever
|
|
|
|
find() 'wherever' start = 27 end = 35
|
|
|
|
T\w+
|
|
|
|
find() 'Targathian' start = 0 end = 10
|
|
|
|
lookingAt() start = 0 end = 10
|
|
|
|
input : signal sounds among the stars ... We'll be there.
|
|
|
|
\w*ere\w*
|
|
|
|
find() 'there' start = 43 end = 48
|
|
|
|
input : This fine ship, and this fine crew ...
|
|
|
|
T\w+
|
|
|
|
find() 'This' start = 0 end = 4
|
|
|
|
lookingAt() start = 0 end = 4
|
|
|
|
input : Never give up! Never surrender!
|
|
|
|
\w*ever
|
|
|
|
find() 'Never' start = 0 end = 5
|
|
|
|
find() 'Never' start = 15 end = 20
|
|
|
|
lookingAt() start = 0 end = 5
|
|
|
|
Never.*?!
|
|
|
|
find() 'Never give up!' start = 0 end = 14
|
|
|
|
find() 'Never surrender!' start = 15 end = 31
|
|
|
|
lookingAt() start = 0 end = 14
|
|
|
|
matches() start = 0 end = 31
|
2015-09-07 11:44:36 -06:00
|
|
|
*/
|