Java / Ope / 文字列操作 / 正規表現

Java / Ope / 文字列操作 / 正規表現

たまに https://www.regular-expressions.info/unicode.html このへんの超マニアック正規表現を使って書く人達がいるのでメモ。 しかもその実装が Java だと仕様通りになっていない。

正規表現を使う場合の注意

正規表現である前に Java の String リテラルなのでその拘束をうける。 正規表現のエスケープ記述はバックスラッシュであるが、Java の String のエスケープ記号でもあるので、エスケープの数が多くなってくるとバックスラッシュだらけになる。

ドル記号を正規表現で使いたいがためのエスケープのドル記号に変換するやつ。ややこしすぎ

"$hoge".replaceAll("\\$", "\\\\\\$");

メモ

// "/hoge/piyo/fuga"のようなもの分解
// スラッシュから始まりスラッシュじゃない文字列の連続にマッチするパターン
Pattern pt = Pattern.compile("(/[^/]+)");
//対象を仕込む
Matcher m = pt.matcher("/hoge/piyo/fuga");
// 頭から2回判定する。ゼロなら1回
m.find(1);
// 1個目のキャプチャを抜き出す
String a = m.group(1);
System.out.println(a); //=> "/piyo"

はっきりいって正規表現使うだけなのにまどろっこし過ぎ。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//正規表現のパターンを作る
Pattern p = Pattern.compile("^うんこ(.*)");
//対象を入力する ※この時点ではまだ結果はまだ
Matcher m = p.matcher("うんこでた。");
//マッチ
m.find();
//結果出力
System.out.println(m.group(1));

タグ

java/ope/string_ope/regexp.txt · 最終更新: 2020-11-20 13:35 by ore