正規表現を使う際、調べながら取り組みますが、毎回複数ページを行き来してしまうため、今後すぐ取り出せるようリストアップしました。
環境
- Ruby
- scanメソッドの引数に正規表現を使用して検索が可能
- gsubメソッドの第一引数に変換前、第二引数に変換後の文字列または正規表現を用いることで置換が可能
- Rubular
メタ文字
-
\d
: 1個の半角数字- = [0-9]
-
\w
: 1個の半角英数字とアンダースコア- = [a-zA-Z0-9_]
-
\t
: タブ文字 -
\n
: 改行文字 -
\s
: 空白文字全般- 言語・環境によって含まれる文字が異なるので注意
- Ruby : [ \t\r\n\f](半角スペース、タブ文字、復帰文字、改行文字、改ページ)
- 言語・環境によって含まれる文字が異なるので注意
-
\
: エスケープ文字-
\\t
: タブ文字ではなく、「\t」という文字列を意味する
-
{n,m}
: 直前の文字がn個以上、m個以下{n}
: 直前の文字がちょうどn文字-
[ABC..]
: AまたはBまたはCまたは...のいずれか1文字- ハイフンを対象にする際は、下の例のように文字の範囲の記号と扱われないよう、[]内の始めか終わりに記述
[a-z]
: aまたはb...yまたはz-
[a-zA-Z0-9]
: aまたはb...z、AまたはB...Z、0または1...9- = 半角英数字1文字
?
: 直前の文字が1文字、または無し.
: 任意の1文字*
: 直前の文字が0文字以上-
+
: 直前の文字が1文字以上-
*
,+
が貪欲なマッチと呼ばれ、条件に当てはまる限り、その全てを対象にする。 -
*?
,+?
は控えめなマッチと呼ばれ、最初にマッチした段階で、止まるようになる。
-
-
()
: ()の中がキャプチャされる- キャプチャする必要なしの場合は、
(?: )
のように、先頭に?:をつける -
(?:文字列)?
: 文字列があり、またはなし
- キャプチャする必要なしの場合は、
-
[^A]
: A以外の任意の1文字-
[^AB]
: AでもなくBでもない任意の1文字 -
[AB^]
: AまたはBまたは^のいずれかの1文字となるので注意
-
-
^~~
: 行頭-
^ +
: 行頭からスペースが1文字以上続く
-
-
~~is $
: 行末-
^ +$
: 行頭から行末までスペースが1文字以上続く
-
-
(AB|CD)
: 文字列AB、またはCD- 範囲を明確にするため( )、キャプチャが必要なければ(?: )
参考
- 初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」
- 99.99%正確な正規表現
- 初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」
- 初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」
現時点では、以前からお世話になっていた記事を元にまとめましたが、随時出会った正規表現を追加で更新していく予定です。