import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
public class Main
{
static void printMatch
( String regex,
String str,
int ...
groups ) {
System .
out .
println ( "String = " + str
) ; System .
out .
println ( "Regex = " + regex
) ; Pattern p = Pattern.compile ( regex) ;
Matcher m = p.matcher ( str) ;
while ( m.find ( ) )
for ( int i: groups)
System .
out .
println ( "Group " + i
+ " = " + m.
group ( i
) ) ; }
public static void main
( String [ ] args
) {
String regex
= "\" .+((?<=\" )[^\" ]*(?=\" )|-).+\" " ; printMatch( regex, "\" this is a string \" xyz\" \" " , 1 ) ;
printMatch( regex, "\" this is a string - \" " , 1 ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpwdWJsaWMgY2xhc3MgTWFpbgp7CiAgIHN0YXRpYyB2b2lkIHByaW50TWF0Y2goU3RyaW5nIHJlZ2V4LCBTdHJpbmcgc3RyLCBpbnQuLi4gZ3JvdXBzKQogICB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5nID0gIiArIHN0cik7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVnZXggPSAiICsgcmVnZXgpOwogICAgICBQYXR0ZXJuIHAgPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwogICAgICBNYXRjaGVyIG0gPSBwLm1hdGNoZXIoc3RyKTsKICAgICAgd2hpbGUgKG0uZmluZCgpKQogICAgICAgICBmb3IgKGludCBpOiBncm91cHMpCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiR3JvdXAgIiArIGkgKyAiID0gIiArIG0uZ3JvdXAoaSkpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgfQoKICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgewogICAJICBTdHJpbmcgcmVnZXggPSAiXCIuKygoPzw9XCIpW15cIl0qKD89XCIpfC0pLitcIiI7CiAgICAgIHByaW50TWF0Y2gocmVnZXgsICAiXCJ0aGlzIGlzIGEgc3RyaW5nIFwieHl6XCIgXCIiLCAxKTsKICAgICAgcHJpbnRNYXRjaChyZWdleCwgICJcInRoaXMgaXMgYSBzdHJpbmcgLSBcIiIsIDEpOwogICB9Cn0=