windows:regex

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
windows:regex [2012/04/14 21:43] – [否定先読み【(?!~)】] ともやんwindows:regex [2019/08/19 07:23] (現在) ともやん
行 3: 行 3:
 </html> </html>
 ====== 正規表現とは ====== ====== 正規表現とは ======
 +
 ===== なぞなぞのような要求を実現できる ===== ===== なぞなぞのような要求を実現できる =====
 <code> <code>
行 16: 行 17:
 </code> </code>
 エディタで正規表現を利用して該当部分をマークした様子。\\ エディタで正規表現を利用して該当部分をマークした様子。\\
-{{:windows:sakura_regex.png?600x400|サクラエディタ}}+{{:windows:sakura_regex.png?600x400|サクラエディタ}}\\
  
 ====== 基礎知識 ====== ====== 基礎知識 ======
 +
 ===== メタキャラクタとリテラル ===== ===== メタキャラクタとリテラル =====
  **メタキャラクタ**(meta character)とは、正規表現中で特別な意味を持つ文字のことである。**リテラル**(literal)は通常の文字のことである。  **メタキャラクタ**(meta character)とは、正規表現中で特別な意味を持つ文字のことである。**リテラル**(literal)は通常の文字のことである。
行 27: 行 29:
   平成   平成
   [1-9]年   [1-9]年
 +
 ===== 文字クラス【[]】 ===== ===== 文字クラス【[]】 =====
  **文字クラス**とは、複数の文字を「[」と「]」のメタキャラクタで囲んだもののことで、複数の文字の**__1文字__**とマッチする。動作はSQLなどのLIKE文とほぼ同じである。  **文字クラス**とは、複数の文字を「[」と「]」のメタキャラクタで囲んだもののことで、複数の文字の**__1文字__**とマッチする。動作はSQLなどのLIKE文とほぼ同じである。
行 46: 行 49:
 | <html>abc[^0-9]</html> | abcに続く文字が数字以外にマッチ | abcd abcX 5abcZ など(*1) |  | <html>abc[^0-9]</html> | abcに続く文字が数字以外にマッチ | abcd abcX 5abcZ など(*1) | 
 *1 abc5 abc 2abcにはマッチしない。 *1 abc5 abc 2abcにはマッチしない。
 +
 ===== 文字クラスの略記法 ===== ===== 文字クラスの略記法 =====
  文字クラスには、以下の略記法が存在する。(**全角もマッチするので注意!!**)  文字クラスには、以下の略記法が存在する。(**全角もマッチするので注意!!**)
行 61: 行 65:
 | a.c | aで始まり任意の1文字がありcで終わる | abc a@c aBcなど | | a.c | aで始まり任意の1文字がありcで終わる | abc a@c aBcなど |
 | xl. | xlで始まり任意の1文字で終わる | xls xla xltなど | | xl. | xlで始まり任意の1文字で終わる | xls xla xltなど |
 +
 ===== 選択【|】 ===== ===== 選択【|】 =====
  「|」は複数の選択肢のいづれかにマッチするメタキャラクタである。  「|」は複数の選択肢のいづれかにマッチするメタキャラクタである。
行 66: 行 71:
 | <html>Private (Function|Sub)</html> | Privateの後にスペースが1つありFunctionまたはSubがある | Private Function、Private Sub | | <html>Private (Function|Sub)</html> | Privateの後にスペースが1つありFunctionまたはSubがある | Private Function、Private Sub |
 | <html>do.|c.t</html> | doの後に任意の1文字、または、cの後に任意の1文字がありtで終わる | doc dog cat cutなど| | <html>do.|c.t</html> | doの後に任意の1文字、または、cの後に任意の1文字がありtで終わる | doc dog cat cutなど|
 +
 ===== 量指定子、範囲指定繰り返し制御【?*+{n}{n,}{m,n}】 ===== ===== 量指定子、範囲指定繰り返し制御【?*+{n}{n,}{m,n}】 =====
  **量指定子**は、その直前にある正規表現で指定された要素が繰り返される事を意味する。  **量指定子**は、その直前にある正規表現で指定された要素が繰り返される事を意味する。
行 83: 行 89:
  
 ===== 位置指定子【^$\b\B(?=~)(?!~)(?<=~)(?<!~)】 ===== ===== 位置指定子【^$\b\B(?=~)(?!~)(?<=~)(?<!~)】 =====
- 
 ^ 位置指定子 ^ 意味 ^ ^ 位置指定子 ^ 意味 ^
 | %%^%% | 行の先頭 | | %%^%% | 行の先頭 |
行 95: 行 100:
  
 ==== 肯定先読み【(?=~)】 ==== ==== 肯定先読み【(?=~)】 ====
- 
 ^正規表現  ^説明  ^ ^正規表現  ^説明  ^
 |.+(?=ねこ)  |右側に「ねこ」が存在する  | |.+(?=ねこ)  |右側に「ねこ」が存在する  |
- 
 <html> <html>
-    <span class="marker">うみ</span>ねこ<br /> 
     <span class="marker">くろ</span></span>ねこ<br />     <span class="marker">くろ</span></span>ねこ<br />
     ねこパンチ<br />     ねこパンチ<br />
-    ねこミミ<br /> 
-    ねこじゃらし<br /> 
     <span class="marker">まねき</span>ねこ<br />     <span class="marker">まねき</span>ねこ<br />
 </html> </html>
  
 ==== 否定先読み【(?!~)】 ==== ==== 否定先読み【(?!~)】 ====
- 
 ^正規表現  ^説明  ^ ^正規表現  ^説明  ^
-|ねこ(?!ミミ)  |「ねこ」の右側に「ミミ」が存在しない  | +|ねこ(?!ミミ)  |右側に「ミミ」が存在しない  |
 <html> <html>
     <span class="marker">ねこ</span>パンチ<br />     <span class="marker">ねこ</span>パンチ<br />
     ねこミミ<br />     ねこミミ<br />
     <span class="marker">ねこ</span>じゃらし<br />     <span class="marker">ねこ</span>じゃらし<br />
 +</html>
 +
 +==== 肯定戻り読み【(?<=~)】 ====
 +^正規表現  ^説明  ^
 +|%%(?<=ねこ).+%%  |左側に「ねこ」が存在する  |
 +<html>
 +    ねこ<span class="marker">パンチ</span><br />
 +    ねこ<span class="marker">ミミ</span><br />
 +    ねこ<span class="marker">じゃらし</span><br />
 +</html>
 +
 +==== 否定戻り読み【(?<!~)】 ====
 +^正規表現  ^説明  ^
 +|(?<!くろ)ねこ  |左側に「くろ」が存在しない  |
 +<html>
 +    くろねこ<br />
 +    とら<span class="marker">ねこ</span><br />
 +    しろ<span class="marker">ねこ</span><br />
 </html> </html>
  
行 135: 行 151:
 20120201-20120229_access_log\\ 20120201-20120229_access_log\\
 20120301-20120331_access_log\\ 20120301-20120331_access_log\\
 +
 +===== 置換 =====
 +**dir /B** 出力から **JSON** を生成する例。\\
 +<code>
 +^([a-z\.\-_]*)
 +</code>
 +{{:windows:sakura_regex_json.png?640|サクラエディタ 正規表現 置換}}\\
  
 ====== 応用編 ====== ====== 応用編 ======
 +
 ===== 0001/01/01~9999/12/31の日付に一致 ===== ===== 0001/01/01~9999/12/31の日付に一致 =====
 <code> <code>
 (0{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})/(0[1-9]|1[0-2])/(0[1-9]|[12]\d|3[01]) (0{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})/(0[1-9]|1[0-2])/(0[1-9]|[12]\d|3[01])
 </code> </code>
 +
 ===== 00:00:00~23:59:59の時間に一致 ===== ===== 00:00:00~23:59:59の時間に一致 =====
 <code> <code>
 ([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d) ([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)
 </code> </code>
 +
 ===== 全角文字に一致 ===== ===== 全角文字に一致 =====
 <code> <code>
 [^ -~。-゚] [^ -~。-゚]
 </code> </code>
 +
 ===== 文字列を含まない行に一致 ===== ===== 文字列を含まない行に一致 =====
 <code> <code>
  • windows/regex.1334407401.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)