javaの正規表現まとめ

0pt   2018-11-09 14:36
IT技術情報局

Stringによる正規表現 Stringによる正規表現 置換

*replaceAll //全対置換
*replaceFirst //最初置換

/** * アルファベット以外は除外する。 * [^a-zA-Z] -->アルファベット以外 */ private static void testReplace() { String str = "fjslru7974294jlsjfJLJL+;]:@:UOIUO"; String regex = "[^a-zA-Z]"; System.out.println(str.replaceAll(regex, "")); } //結果fjslrujlsjfJLJLUOIUO Stringによる正規表現 分割

*split //分割

/** * 数字をで分けて配列にする。 * [0-9]+ -->数字多数 * d+ -->数字多数 */ private static void testSplit() { String str = "jfslj47924fjslk24729djldja492824"; String regex = "[0-9]+"; System.out.println(Arrays.toString(str.split(regex))); } //結果[jfslj, fjslk, djldja] Stringによる正規表現 マッチング

*matches //マッチング

*小数の判断

/** * d+ -->数字多数個 * . -->. * (.d+)? -->括弧内は0個または1個 * */ private static void testMatchDouble() { String str = "10.5"; String regex = "d+(.d+)?"; if(str.matches(regex)) { System.out.println(Double.parseDouble(str)); }else { System.out.println("double ではない"); } }

*日付の判断

/** * d{4} -->数字4個 * d{2} -->数字2個 * - -->- */ private static void testMatchDate() { String str = "2019-09-10"; String regex = "d{4}-d{2}-d{2}"; if(str.matches(regex)) { try { System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str)); } catch (ParseException e) { e.printStackTrace(); } }else { System.out.println("date ではない"); } }

*電話番号の判断

/** * d{10,12} -->数字10-12個 * d{3,5} -->数字3-5個 * - -->- */ private static void testMatchTellphoneNumber() { String str = "080-1111-1111"; String regex1 = "d{10,12}"; String regex2 = "d{3,5}-d{3,5}-d{3,5}"; if(str.matches(regex1) || str.matches(regex2)) { System.out.println(str); }else { System.out.println("電話番号 ではない"); } }

*Emailの判断

/** * w+ -->アルファベット多数個 * [a-zA-Z] -->アルファベット多数個 * @ -->@ * . -->. * - -->- * _ -->_ * [a-zA-Z0-9_-.] -->アルファベットまたは_-. */ private static void testMatchEmail() { String str = "aaafsjkjfsk@a.b_c-d.com"; String regex = "[a-zA-Z][a-zA-Z0-9_-.]{5,29}@[a-zA-Z0-9_-.]+.w+"; if(str.matches(regex)) { System.out.println(str); }else { System.out.println("E-mail ではない"); } } String正規表現と(Pattern、Matcher)正規表現の比較 String と pattern private static void textPattern() { //文字列 String string = "da646dad4da64da54d6a4d5a4d6a4d5ae78w"; String regex = "[0-9]+"; //pattern で分割 Pattern pattern = Pattern.compile(regex); System.out.println(Arrays.toString(pattern.split(string))); //string で分割 System.out.println(Arrays.toString(string.split(regex))); } //結果[da, dad, da, da, d, a, d, a, d, a, d, ae, w]    [da, dad, da, da, d, a, d, a, d, a, d, ae, w] String と matcher private static void testMatcher() { String str = "2019-09-10"; String regex = "d{4}-d{2}-d{2}"; //Matcher によるマッチング Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); System.out.println(""+ matcher.matches()); //String によるマッチング System.out.println(""+str.matches(regex)); } //結果 true true よく使う正規表現のまとめ 一文字
abc abc
n 改行
t tab
[abc] aまたはbまたはc
[^abc] a,b,c以外
[a-zA-Z] アルファベット
[a-d[m-p]] a-dまたはm-p
d 数字
D 数字以外
w a-z A-Z と _ [a-zA-Z_]と同じ
W 上記以外
多数文字
d+ 数字1つ以上
d? 数字0個 1個 
d* 数字0個 1個以上 
d{5} 数字5個 
d{5,10} 数字5個以上10個以下 
d{5,} 数字5個以上 
多数の判断
XY 判断Xの後にY
X|Y 判断XまたはY
(X) 判断Xをグループ化
サンプルコード

Source: java tag

   ITアンテナトップページへ
情報処理/ITの話題が沢山。