#author("2023-10-08T10:36:13+08:00","default:Admin","Admin") [[+C#+文字列処理]] #author("2023-10-08T10:36:49+08:00","default:Admin","Admin") [[FrontPage]] #contents *マッチ回数 [#i61e7367] |文法|意味| |{N}|直前の正規表現のN回繰り返しにマッチする| |{M,}|直前の正規表現のM回以上繰り返しにマッチする| |{,N}|直前の正規表現のN回以下繰り返しにマッチする| |{M,N}|直前の正規表現のM回以上N回以下繰り返しにマッチする| *エスケープ文字 [#ye88aed4] |エスケープ文字|意味| |\s|空白・スペース| |\w|a-zを表す| |\d|0-9を表す| |\b|単語の境界にマッチ| |\B|単語の境界以外にマッチ| *演算子 [#wc9a87c4] |演算子|意味| |.|改行文字を除いた任意の1文字にマッチする| |?:|キャプチャしません| |??|最短一致の?(できれば0回、できなければ1回の繰り返し)| |+?|最短一致の+| |*?|最短一致の*| |?|0回または1回以上のマッチ| *条件文 [#b25bfc7c] if-elseのように使う (?(式)yes|no) 例:~ - 「?<=」 戻り読み表明 abcdefghi内の「abc」が前に来る「def」にマッチする 使用例: (?<=abc)def あるいは (?=defghi)def ** 含某个单词 [#xa2da225] (?=abcd) 「?=」 先読み表明 abcdefghi内の「ghi」が後に来る「def」にマッチする 使用例: def(?=ghi) ** 不包含某个单词 [#d403bd49] (?!abcd) 把那些不包含robots.txt字符串的条目给找出来(只要Url中包含robots.txt的都给过滤掉) ^(?!.*?robots).*$ *コメント [#u076db5e] 「#」を使用してコメントを記述できます。コメント有効にする場合、空白の非エスケープ文字の無視を意味する。RegexOptions.IngnorePatternWhitespaceの指定が必要 例: #codeprettify{{ Regex regex = new Regex(@" ^ #開始アンカー (?=.*\d) #最低でも1桁の数字が必要 ", RegexOptions.IngnorePatternWhitespace); }} *正規表現で日本語と半角英数字の間にスペースを挿入する [#ucb0ff95] テキスト中に全角文字と半角文字が混在していると、その間が詰まって見にくいことがある。そこで、ホームページなどでも、全角文字と半角文字の間に半角スペースを挿入することがよく行われる。いちいち手作業で半角スペースを挿入するのも面倒なので、今回は、PHP で自動的に半角スペースを挿入するプログラムを考えてみることにする。 考え方 今回は、全角平仮名と漢字、半角英数字のみを対象に考えてみることにする。 半角スペースを挿入する必要がある位置を■で示すと、 1. 半角英数字が1つ以上並んでいる■日本語文字が1つ以上並んでいる 2. 日本語文字が1つ以上並んでいる■半角英数字が1つ以上並んでいる の2つのケースに限られる。 各々を正規表現であらわすと 1. ([0-9A-Za-z]+)([ぁ-煕]+) 2. ([ぁ-煕]+)([0-9A-Za-z]+) となる。~ *改行を削除 [#e4905a24] \r\n は改行を示す *全角カタカナ [#s1328d5e] UTF-8~ ^[ァ-タダ-ヶ]*$ *エスケープが必要な文字 [#db647b01] \ * + ? . { } ( ) [ ] ^ $ - | / *GUID形式の文字列にマッチする.Net正規表現 [#c5c2ae5a] (?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 #hr(); - URLを判定する正規表現:&br; "http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" -- &new{2011-05-19 (木) 16:30:23}; #comment_kcaptcha