0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現(Regex)について

Posted at

正規表現(Regex)について

正規表現(Regular Expressions、略してRegex)は、文字列のパターンを指定して検索や置換を行うための強力なツールだ。プログラミングやテキスト処理で広く使われ、VSCodeやgrepなどのツールでもよく使用される。

基本構文

正規表現は、特定の文字列や文字列パターンを効率的に検索するための方法を提供する。ここでは、よく使われる正規表現パターンを紹介する。

特殊文字

  • .: 任意の1文字に一致する。
  • ^: 行の先頭に一致する。
  • $: 行の末尾に一致する。
  • *: 直前の文字が0回以上繰り返されることに一致する。
  • +: 直前の文字が1回以上繰り返されることに一致する。
  • ?: 直前の文字が0回または1回の出現に一致する。
  • []: 文字クラスを定義する(例: [a-z]は小文字のアルファベットに一致)。
  • |: 論理ORを表す(例: cat|dogcatまたはdogに一致)。
  • (): グループ化して、1つの単位として扱う。

エスケープ文字

正規表現の特殊文字を文字通りに検索する場合は、\(バックスラッシュ)でエスケープする必要がある。

  • : \. は実際のピリオドに一致する。

Visual Studio Codeでの使用

VSCodeでは、検索と置換の際に正規表現を使うことができる。検索バーで正規表現を有効にするには、検索ウィンドウの.*アイコンをクリックする。

VSCodeの基本的な例

  1. 任意の文字に一致する

    • 検索: he..o
    • 一致する例: hello, heazo
  2. 特定のパターンを検索

    • 検索: ^TODO:
    • 一致する例: 行の先頭がTODO:で始まるテキスト。
  3. 数字を含む行を検索

    • 検索: \d+
    • 一致する例: 123, 4567
  4. 特定の単語の複数形を検索

    • 検索: cat(s|)
    • 一致する例: cat, cats
  5. 複数行にわたる検索

    • 検索: foo.*bar.*は改行を除く任意の文字に一致)
    • 注意: 複数行にまたがる検索はVSCodeでは少し制限があるので、工夫が必要。

VSCodeでの置換例

  1. 日付フォーマットの置換
    • 検索: (\d{4})-(\d{2})-(\d{2})
    • 置換: $3/$2/$1
    • 結果: 2024-11-1313/11/2024 に置換される。

grepコマンドでの使用

grepコマンドでも正規表現を使った検索が可能だ。基本的な構文は次の通り。

grep "正規表現" ファイル名

grepの基本的な例

  1. 行の先頭に一致するパターンを検索

    grep "^start" file.txt
    
    • "start"で始まる行を検索する。
  2. 行の末尾に一致するパターンを検索

    grep "end$" file.txt
    
    • "end"で終わる行を検索する。
  3. 任意の文字列を検索

    grep "h.t" file.txt
    
    • htの間に任意の1文字がある文字列(例: hat, hot)を検索する。
  4. 数字を含む行を検索

    grep "[0-9]" file.txt
    
    • 数字を含む行を検索する。

grepでのエスケープ

特殊文字を検索する場合は、\でエスケープする。

grep "\." file.txt
  • ピリオドそのものを検索する。

実用例

  1. 複数のファイルからエラーを検索

    grep "error" *.log
    
    • すべての.logファイルから"error"を検索する。
  2. 大文字と小文字を区別せずに検索

    grep -i "warning" system.log
    
    • 大文字小文字を無視して"warning"を検索する。
  3. 正規表現を使って特定のパターンを検索

    grep -E "user_(one|two)" file.txt
    
    • user_oneまたはuser_twoに一致する行を検索する(-Eは拡張正規表現を使用するオプション)。

まとめ

  • 正規表現の基本: 検索パターンを指定する強力なツールで、VSCodeやgrepで活用できる。
  • VSCodeの検索と置換: .*アイコンで正規表現を有効にし、柔軟な検索や置換が可能。
  • grepでの検索: ログ解析や特定のパターンの抽出に便利。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?