文法 | 意味 |
{N} | 直前の正規表現のN回繰り返しにマッチする |
{M,} | 直前の正規表現のM回以上繰り返しにマッチする |
{,N} | 直前の正規表現のN回以下繰り返しにマッチする |
{M,N} | 直前の正規表現のM回以上N回以下繰り返しにマッチする |
エスケープ文字 | 意味 |
\s | 空白・スペース |
\w | a-zを表す |
\d | 0-9を表す |
\b | 単語の境界にマッチ |
\B | 単語の境界以外にマッチ |
演算子 | 意味 |
. | 改行文字を除いた任意の1文字にマッチする |
?: | キャプチャしません |
?? | 最短一致の?(できれば0回、できなければ1回の繰り返し) |
+? | 最短一致の+ |
*? | 最短一致の* |
? | 0回または1回以上のマッチ |
if-elseのように使う
(?(式)yes|no)
例:
abcdefghi内の「abc」が前に来る「def」にマッチする
使用例:
(?<=abc)def あるいは (?=defghi)def
使用例:
def(?=ghi)
「#」を使用してコメントを記述できます。コメント有効にする場合、空白の非エスケープ文字の無視を意味する。RegexOptions.IngnorePatternWhitespaceの指定が必要
例:
Regex regex = new Regex(@" ^ #開始アンカー (?=.*\d) #最低でも1桁の数字が必要 ", RegexOptions.IngnorePatternWhitespace);
テキスト中に全角文字と半角文字が混在していると、その間が詰まって見にくいことがある。そこで、ホームページなどでも、全角文字と半角文字の間に半角スペースを挿入することがよく行われる。いちいち手作業で半角スペースを挿入するのも面倒なので、今回は、PHP で自動的に半角スペースを挿入するプログラムを考えてみることにする。 考え方
今回は、全角平仮名と漢字、半角英数字のみを対象に考えてみることにする。 半角スペースを挿入する必要がある位置を■で示すと、
1. 半角英数字が1つ以上並んでいる■日本語文字が1つ以上並んでいる 2. 日本語文字が1つ以上並んでいる■半角英数字が1つ以上並んでいる
の2つのケースに限られる。 各々を正規表現であらわすと
1. ([0-9A-Za-z]+)([ぁ-煕]+) 2. ([ぁ-煕]+)([0-9A-Za-z]+)
となる。
\r\n は改行を示す
UTF-8
^[ァ-タダ-ヶ]*$
\ * + ? . { } ( ) [ ] ^ $ - | /
(?i:{?(?<guid>([0-9A-Z]{8}(-?)[0-9A-Z]{4}\2[0-9A-Z]{4}\2[0-9A-Z]{4}\2[0-9A-Z]{12}))}?)
下記のような形式のGUIDをマッチできます。
{020cac21-6dcb-4d0e-ae79-86982cf3ad90} {020cac216dcb4d0eae7986982cf3ad90} 020cac21-6dcb-4d0e-ae79-86982cf3ad90 020cac216dcb4d0eae7986982cf3ad90