「Java 正規表現 $ 効かない」とかで検索かけたけどそれっぽいのがヒットしなかった。
探せばあったけど軽く流してあるだけだったのであまり躓くポイントではないのかな?
備忘録として記載しておく。
結論:Pattern.compile("RegExp", Pattern.MULTILINE); で解決
--- 対象文字列
regExp: 1
regex: 2
regular expression: 3
--- 対象文字列
マークアップ使えない...
でSakuraエディタのようなもので
^(?!.*exp).*$
と検索すれば上の2行がヒットする。(1行目がヒットするのは大文字だから)
それではと思い、Javaでメソッド定義
------- ソース
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String s = "regExp: 1\n" +
"regex: 2\n" +
"regular expression: 3";
Pattern p = Pattern.compile("^(?!.*exp).*$");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
}
}
------- ソース
結果は何も表示されない。。。
どうやらデフォルトでは行末記号を無視する様子。
そのため、デフォルト設定を用いるString#replaceAll()は勿論反応してくれない。
Pattern.MULTILINEを指定することでSakuraエディタでテストしていたような挙動になった。
結構時間喰ったなぁ(´・ω・`)