/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.regex.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String str
= "HELLO_WORLD_123456 TEst" ;
System .
out .
println ( "First test" ) ; String regex1
= ".*(WORLD).*" ; String matchedString
= getValueByregexExpr
( str, regex1
) ; //Here, I want to obtain matchedString = WORLD
if ( matchedString == null ) {
System .
out .
println ( "matchedString null" ) ; } else if ( matchedString.equals ( regex1) ) {
System .
out .
println ( "String found but empty group(1)" ) ; } else {
System .
out .
println ( "Result : " + matchedString
) ; }
//Here, I want to obtain matchedString = WORLD_123456
System .
out .
println ( "\n Second test" ) ; String regex2
= "(WORLD_[^_\\ s]+)" ; matchedString = getValueByregexExpr ( str, regex2) ;
if ( matchedString == null ) {
System .
out .
println ( "regex " + regex2
+ " matchedString null" ) ; } else if ( matchedString == regex2) {
System .
out .
println ( "regex " + regex2
+ " String found but empty group(1)" ) ; } else {
System .
out .
println ( "regex " + regex2
+ " Result : " + matchedString
) ; }
}
{
Pattern regex = Pattern.compile ( regexExpr, Pattern.DOTALL ) ;
Matcher matcher1 = regex.matcher ( str) ;
if ( matcher1.find ( ) ) {
if ( matcher1.groupCount ( ) != 0 && matcher1.group ( 1 ) != null ) {
for ( int i = 0 ; i <= matcher1.groupCount ( ) ; i++ ) {
System .
out .
println ( "matcher " + i
+ " for regex " + regexExpr
+ "= " + matcher1.
group ( i
) ) ; }
return matcher1.group ( 1 ) ;
}
return regexExpr;
}
return null ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgc3RyID0gIkhFTExPX1dPUkxEXzEyMzQ1NiBURXN0IjsKCQoJICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoIkZpcnN0IHRlc3QiKTsKCSAgICBTdHJpbmcgcmVnZXgxID0gIi4qKFdPUkxEKS4qIjsKCSAgICBTdHJpbmcgbWF0Y2hlZFN0cmluZyA9IGdldFZhbHVlQnlyZWdleEV4cHIgKHN0ciwgcmVnZXgxKTsKCSAgICAvL0hlcmUsIEkgd2FudCB0byBvYnRhaW4gbWF0Y2hlZFN0cmluZyA9IFdPUkxECgkgICAgaWYgKG1hdGNoZWRTdHJpbmcgPT0gbnVsbCkgewoJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJtYXRjaGVkU3RyaW5nIG51bGwiKTsKCSAgICB9IGVsc2UgaWYgKG1hdGNoZWRTdHJpbmcuZXF1YWxzIChyZWdleDEpKSB7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoIlN0cmluZyBmb3VuZCBidXQgZW1wdHkgZ3JvdXAoMSkiKTsKCSAgICB9IGVsc2UgewoJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJSZXN1bHQgOiAiICsgbWF0Y2hlZFN0cmluZyk7CgkgICAgfQoJCgkgICAgLy9IZXJlLCBJIHdhbnQgdG8gb2J0YWluIG1hdGNoZWRTdHJpbmcgPSBXT1JMRF8xMjM0NTYKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJcblNlY29uZCB0ZXN0Iik7CgkgICAgU3RyaW5nIHJlZ2V4MiA9ICIoV09STERfW15fXFxzXSspIjsKCSAgICBtYXRjaGVkU3RyaW5nID0gZ2V0VmFsdWVCeXJlZ2V4RXhwciAoc3RyLCByZWdleDIpOwoJICAgIGlmIChtYXRjaGVkU3RyaW5nID09IG51bGwpIHsKCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICgicmVnZXggIiArIHJlZ2V4MiArICIgbWF0Y2hlZFN0cmluZyBudWxsIik7CgkgICAgfSBlbHNlIGlmIChtYXRjaGVkU3RyaW5nID09IHJlZ2V4MikgewoJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJyZWdleCAiICsgcmVnZXgyICsgIiBTdHJpbmcgZm91bmQgYnV0IGVtcHR5IGdyb3VwKDEpIik7CgkgICAgfSBlbHNlIHsKCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICgicmVnZXggIiArIHJlZ2V4MiArICIgUmVzdWx0IDogIiArIG1hdGNoZWRTdHJpbmcpOwoJICAgIH0KCgl9CglwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRWYWx1ZUJ5cmVnZXhFeHByIChTdHJpbmcgc3RyLCBTdHJpbmcgcmVnZXhFeHByKSAKCXsKICAgIAlQYXR0ZXJuIHJlZ2V4ID0gUGF0dGVybi5jb21waWxlIChyZWdleEV4cHIsIFBhdHRlcm4uRE9UQUxMKTsKICAgIAlNYXRjaGVyIG1hdGNoZXIxID0gcmVnZXgubWF0Y2hlciAoc3RyKTsKICAgIAlpZiAobWF0Y2hlcjEuZmluZCAoKSkgewoJICAgICAgICBpZiAobWF0Y2hlcjEuZ3JvdXBDb3VudCAoKSAhPSAwICYmIG1hdGNoZXIxLmdyb3VwICgxKSAhPSBudWxsKSB7CiAgICAJICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBtYXRjaGVyMS5ncm91cENvdW50ICgpOyBpKyspIHsKICAgICAgICAJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJtYXRjaGVyICIgKyBpICsgIiBmb3IgcmVnZXggIiArIHJlZ2V4RXhwciArICI9ICIgKyBtYXRjaGVyMS5ncm91cCAoaSkpOwogICAgICAgICAgICAJfQogICAgICAgICAgICAJcmV0dXJuIG1hdGNoZXIxLmdyb3VwICgxKTsKCSAgICAgICAgfQogICAgICAgIAlyZXR1cm4gcmVnZXhFeHByOwoJICAgIH0KCSAgICByZXR1cm4gbnVsbDsKCX0KfQ==