内容
構文 | 概要 | サンプル構文 | サンプル結果 |
---|---|---|---|
^ | 行頭 ※改行がある場合は改行直後もマッチ | puts "test hoge" =~ /^test/ puts "test\nhoge" =~ /^hoge/ |
0 5 |
$ | 行末 ※改行がある場合は行末もマッチ | puts "test hoge" =~ /hoge$/ | 5 |
. | 任意の一文字 | puts "あ" =~ /./ "0" =~ /./ " " =~ /./ "" =~ /./ |
0 0 0 nil |
\w | 英数字。[0-9A-Za-z_]と同じ | pattern = /\w/ puts "0" =~ pattern puts "a" =~ pattern puts "A" =~ pattern puts "あ" =~ pattern |
0 0 0 nil |
\W | 非英数字。\w 以外の一文字 | pattern = /\W/ puts "0" =~ pattern puts "a" =~ pattern puts "A" =~ pattern puts "あ" =~ pattern |
nil nil nil 0 |
\s | 空白文字。[ \t\n\r\f] と同じ | pattern = /\s/ puts "\s" =~ pattern puts "\t" =~ pattern puts "\f" =~ pattern puts "\r" =~ pattern puts "0" =~ pattern puts "a" =~ pattern puts "A" =~ pattern puts "あ" =~ pattern |
0 0 0 0 nil nil nil nil |
\S | 非空白文字。[ \t\n\r\f] 以外の一文字 | pattern = /\S/ puts "\s" =~ pattern puts "\t" =~ pattern puts "\f" =~ pattern puts "\r" =~ pattern puts "nil" =~ pattern puts "a" =~ pattern puts "A" =~ pattern puts "あ" =~ pattern |
nil nil nil nil 0 0 0 0 |
構文 | 概要 | サンプル構文 | サンプル結果 |
---|---|---|---|
\d | 数字。[0-9] と同じ。全角は除外 | pattern = /\d/ puts "0" =~ pattern puts "9" =~ pattern puts "\s" =~ pattern puts "a" =~ pattern puts "A" =~ pattern puts "あ" =~ pattern |
0 nil nil nil nil nil |
\A | 文字列先頭 ※改行がある場合でも関係なし | puts "test hoge" =~ /\Atest/ puts "test\nhoge" =~ /\Ahoge/ |
0 nil |
\Z | 行末。$と同様 | 省略 | 省略 |
\z | 文末。※改行の有無は不問 | p "\n".gsub(/$/, "o") | "\no" |
\b | 語境界 | p "test hoge hoo".gsub(/\b/, ":") | ":test: :hoge: :hoo:" |
\B | 非語境界 | p "test hoge hoo".gsub(/\B/, ":") | "t:e:s:t h:o:g:e h:o:o" |
[] | 正規表現 [ ] は、文字クラス指定。[] 内に列挙したいずれかの一文字にマッチ | p "hogea".gsub(/[hoge]/,'@') | "@@@@a" |
[^] | 正規表現 [^ ] は、文字クラス指定の否定。[^] 内に列挙したいずれかの一文字以外にマッチ | p "09azあ".gsub(/[^\d]/,'@') | "09@@@" |
構文 | 概要 | サンプル構文 | サンプル結果 |
---|---|---|---|
\p{Alnum} | 英数字 | p "hoge2 aHOGE".gsub(/\p{Alnum}/,'@' | #=>@@@@@ @@@@@ |
\p{^Alnum} | 英数字以外 | p "hoge2 aHOGE".gsub(/\p{^Alnum}/,'@' | #=>hoge2@aHOGE |
\p{Ascii} | 7ビット文字 | p "hoge2 aHOGE".gsub(/\p{Ascii}/,'@' | #=>@@@@@@@@@@@ |
\p{Blank} | 空白とタブ | p "hoge2 aHOGE".gsub(/\p{Blank}/,'@' | #=>hoge2@aHOGE |
\p{Cntrl} | 制御文字 | p "hoge2 aHOGE".gsub(/\p{Cntrl}/,'@' | #=>hoge2 aHOGE |
\p{Digit} | 数字 | p "hoge2 aHOGE".gsub(/\p{Digit}/,'@' | #=>hoge@ aHOGE |
\p{Graph} | 印字可能文字 | p "hoge2 aHOGE".gsub(/\p{Graph}/,'@' | #=>@@@@@ @@@@@ |
\p{Lower} | 小文字アルファベット | p "hoge2 aHOGE".gsub(/\p{Lower}/,'@' | #=>@@@@2 @HOGE |
\p{Print} | 任意の印字可能文字 | p "hoge2 aHOGE".gsub(/\p{Print}/,'@' | #=>@@@@@@@@@@@ |
\p{Punct} | 印字可能文字 | p "hoge2 aHOGE".gsub(/\p{Punct}/,'@' | #=>hoge2 aHOGE |
\p{Space} | 空白文字 | p "hoge2 aHOGE".gsub(/\p{Space}/,'@' | #=>hoge2@aHOGE |
\p{Upper} | 大文字アルファベット | p "hoge2 aHOGE".gsub(/\p{Upper}/,'@' | #=>hoge2 a@@@@ |
\p{Xdigit} | 16進数を表す文字 | p "hoge2 aHOGE".gsub(/\p{Xdigit}/,'@' | #=>hog@@ @HOG@ |
\p{Word} | 英数字、アンダースコア、マルチバイト文字 | p "hoge2 aHOGE".gsub(/\p{Word}/,'@' | #=> @@@@@ @@@@@ |
\p{Hiragana} | ひらがな | p "hoge2 aHOGEあア".gsub(/\p{Hiragana}/,'@' | #=> hoge2 aHOGE@ア |
\p{Katakana} | カタカナ | p "hoge2 aHOGEあア".gsub(/\p{Katakana}/,'@' | #=> hoge2 aHOGEあ@ |
構文 | 概要 | サンプル構文 | サンプル結果 |
---|---|---|---|
* | 直前の表現の 0 回以上の繰り返し。最長マッチ | p "AhogeZAhogeZAZ".gsub(/A(.*)Z/,'@\1@') | "@hogeZAhogeZA@" |
*? | 直前の表現の 0 回以上の繰り返し。最短マッチ | p "AhogeZAhogeZAZ".gsub(/A(.*?)Z/,'@\1@') | "@hoge@@hoge@@@" |
+ | 直前の表現の 1 回以上の繰り返し。最長マッチ | p "AhogeZAhogeZAZ".gsub(/A(.+)Z/,'@\1@') | "@hogeZAhogeZA@" |
+? | 直前の表現の 1 回以上の繰り返し。最短マッチ | p "AhogeZAhogeZAZ".gsub(/A(.+?)Z/,'@\1@') | "@hoge@@hoge@AZ" |
{m} | 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回 の繰り返し |
"hogehogehoge".gsub(/(hoge){1}/,'@') | @@@ |
{m,} | 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回以上 の繰りし |
"hogehoge,hoge".gsub(/(hoge){2,}/,'@') | @,hoge |
{m,n} | 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回以上、最大 n 回 の繰り返し |
"hogehogehoge,hogehoge,hoge".gsub(/(hoge){2,3}/,'@') | @,@,hoge |
{m}? | 最短一致版 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回 の繰り返し |
puts "hogehogehoge,hogehoge,hoge".gsub(/(hoge){2}/,'@') | @hoge,@,hoge |
{m,}? | 最短一致版 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回以上 の繰りし |
puts "hogehogehoge,hogehoge,hoge".gsub(/(hoge){2,}?/,'@') | @hoge,@,hoge |
{m,n}? | 範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の * m 回以上、最大 n 回 の繰り返し |
puts "hogehogehoge,hogehoge,hoge".gsub(/(hoge){2,3}?/,'@') | @hoge,@,hoge |
構文 | 概要 | サンプル構文 | サンプル結果 |
---|---|---|---|
? | 量指定子(quantifiers)。 直前の正規表現の 0 または 1 回の繰り返し。 | puts "あほhogehogehogeです,あほhogehogeです,あほhogeです".gsub(/あほ(hoge)?です/,'@') | あほhogehogehogeです,あほhogehogeです,@ |
? | 量指定子(quantifiers)。 直前の正規表現の 0 または 1 回の繰り返し。最短一致 | −ー | −ー |
| | 選択(alternative)。前後のどちらかと一致すればマッチ | p "はげとひげとほげ".gsub(/(は|ひ)げ/,'@') | "@と@とほげ" |
() | 正規表現のグループ化。括弧の中の正規表現にマッチした文字列は後方参照で利用可能 | p "はげとひげとほげとはげ".gsub(/(は|ひ)げ/,'[\1=>@],\2') | "[は=>@],と[ひ=>@],とほげと[は=>@]," |
\1\2...\n | 後方参照 | p "はげとひげとほげとはげ".gsub(/(は|ひ)げ/,'[\1=>@],\2') | "[は=>@],と[ひ=>@],とほげと[は=>@]," |
(?# ) | コメント | p "はげとひげとほげとはげ".gsub(/(?#はげ)と/,'@') | "はげ@ひげ@ほげ@はげ" |
(?: ) | 後方参照を伴わないグループ化 | p "はげとひげとほげとはげ".gsub(/(?:はげ)|(ひげ)/,'[\1=>@]') | "[=>@]と[ひげ=>@]とほげと[=>@]" |
(?=) | ゼロ幅の肯定先読み(直後に任意の文字があるが、任意の文字自体はヒットさせたくない場合) | p "hoge2 aHOGEあア".gsub(/[\w](?=g)/i,'@') | "h@ge2 aH@GEあア" |
(?!) | ゼロ幅の肯定先読みの否定 | p "hoge2 aHOGEあア".gsub(/[\w](?!g)/i,'@') | "@o@@@ @@O@@あア" |
(?<=) | ゼロ幅の肯定戻り読み(直前に任意の文字があるが、任意の文字自体はヒットさせたくない場合) | p "hoge2 aHOGEあア".gsub(/(?<=hoge)./i,'@') | "hoge@ aHOGE@ア" |
(?<!) | ゼロ幅の肯定戻り読みの否定 | p "hoge2 aHOGEあア".gsub(/(?<!hoge)./i,'@') | "@@@@2@@@@@@あ@" |