正規表現メモ


正規表現の勉強から逃げてきた情弱だから常識しか書かない

行末の空白

\s\+$

vimで行末空白を消したいときは :%s/\s\+$//gc と書けばよいのね

行頭から特定の文字(:)まで

^.*:

特定の文字(:)から行末まで

:.*$

AND(論理積)

/^(?=.*apple)(?=.*orange)/

これはapple → orangeの順番に出てこないと検索できないという理解でいいのかしら

abcで始まらない任意の文字列を抽出

/^(?!abc).*/

abcより前を抜き出す

/(.*)(?=abc)/

正規表現の*とワイルドカードの違い

 Unixのシェル:

? → 任意の1文字
* → 長さ0文字以上の任意の文字列

正規表現:

. → 任意の1文字
* → 直前の表現が0回以上あること
表現 意味
\s tabなどを含む空白文字全般
. 任意の1文字
* 直前のパターンの0回以上の繰り返し
+ 直前のパターンの1回以上の繰り返し
\? 直前のパターンの0回または1回の繰り返し
\$ 行末
^ 行頭
\
/^(?=.*apple)(?=.*orange)/ apple AND orange
foo(?=bar) 肯定的先読み
直後にbarがあるfoo(barは含まない)に一致する
foo(?!=bar) 否定的先読み
直後にbarがないfoo(barは含まない)に一致する
(?<=bar)foo 肯定的後読み
直前にbarがあるfoo(barは含まない)に一致する
(?<!=bar)foo 否定的後読み
直前にbarがないfoo(barは含まない)に一致する

参考