前提・実現したいこと
下記のように、ある文字列の最初ともう一方の文字列の最後が重複しているかどうかを調べられるプログラムを書いたのですが、
このプログラムをより簡潔にできる正規表現の書き方はありますか。
例)文字1が"abcde"、文字2が"deabc"だった場合、文字1の最後の"de"と文字2の最初の"de"がそれぞれ同じなので、重複していると判定が出る。
該当のソースコード
Java
1String str1; 2String str2; 3StringBuilder str1Cpy = new StringBuilder(str1); 4StringBuilder str2Cpy = new StringBuilder(str2); 5boolean flagStr1 = false; 6boolean flagStr2 = false; 7Matcher m1 = null; 8Matcher m2 = null; 9 10for(int i=0;i<str1.length();i++) { 11 Pattern p = Pattern.compile("^" + str1Cpy.toString()); 12 m1 = p.matcher(str2); 13 if(m1.find()) { 14 flagStr1 = true; 15 break; 16 } 17 str1Cpy.deleteCharAt(0); 18} 19for(int i=0;i<str2.length();i++) { 20 Pattern p = Pattern.compile(str2Cpy.toString() + "$"); 21 m2 = p.matcher(str1); 22 if(m2.find()) { 23 flagStr2 = true; 24 break; 25 } 26 str2Cpy.deleteCharAt((str2Cpy.length()-1)); 27} 28 29if(flagStr1 && flagStr2){ 30 何かの処理 31}
試したこと
上記のように総当たり的な正規表現の使い方をしました。
補足情報(FW/ツールのバージョンなど)
JavaSE8
回答1件
あなたの回答
tips
プレビュー