2021-11-25

基本的正規表現

・「複数文字列パターンを全て含まない行」にマッチする

文字列"pattern_A"と"pattern_B"の両方を含まない文字列マッチさせる正規表現

/^(?!.*pattern_A)(?!.*pattern_B).*$/

例:

pattern_Apattern_B ←マッチしない

pattern_Bpattern_A ←パターン前後してもマッチしない

pattern_Cpattern_A ←片方だけでもマッチしない

pattern_Dpattern_Epattern_F ←マッチする

否定先読みで先頭位置位置マッチすることで、複数文字列をチェックできる。否定と肯定を組み合わせることも可能


数字列を3桁区切りにする

s/(?<=\d)(?=(\d{3})+$)/,/

例:(置換前)

1

12

123

1234

12345

123456

1234567

12345678

123456789

1234567890


例:(置換後)

1

12

123

1,234

12,345

123,456

1,234,567

12,345,678

123,456,789

1,234,567,890

位置マッチする正規表現で置換を行うと、文字が挿入できる。


・一番内側のdivマッチする

m{<div>((?!</?div>).)*</div>}

例:

<divabc<divdef</div>ghi<div>jkl<divmno</div>pqr</div>stu</div

否定先読みマッチ対象ではない文字列位置マッチしたのち、.で一文字だけ消費させて次の文字をチェックさせるテクニック


文章の中に複数種類の単位を持つ数字列がたくさんあるうち、特定単位だけ除外してマッチする。(例:パック、kg、倍を除外したい)

/[\d.]++(?!パック|kg|倍)/

卵1パック(657.8g)の値段は225円、1.98ドルです。10kg買うと値段は15.202倍になり、約3420円、約30ドルです。

単位が大量にあるので全体を把握することができないのだが、少なくとも特定単位だけは除外したいことが分かっている場合に使う。

強欲マッチの使い道を考えたらこういうのしかないと思う。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん