正規表現の勉強から逃げてきた情弱だから常識しか書かない
行末の空白
\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回の繰り返し |
| $ | 行末 |
| ^ | 行頭 |
| | | OR |
| /^(?=.*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は含まない)に一致する |