5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2024

Day 2

【図が多め】ざっくり分かる正規表現_すぐ使える編

Posted at

この記事は何の記事?

正規表現をすぐ使えるように例を載せている記事です
また,以下のツール・言語での使用例を載せています

  • VSCode
  • grep コマンド
  • Python3
  • JavaScript

誰のための記事?

  • とりあえずすぐに正規表現を使いたい方
  • 難しい事は一旦抜きにしてすぐ使いたい方
  • 文字少なめで,図が多めの説明が好きな方
  • 正規表現の最初の一歩として軽くみたい方

正規表現が使えると何が嬉しいの

  • 複雑な検索ができる
  • より高度な一括置換ができ,作業効率が上がる
  • 入力の検証がしやすくなる

軽めの前置き

これから色々とご紹介していきます
実際の VSCode などでの使い方については,
ページの最後の方で紹介しています

ゆくゆくはもっと覚えていけるとハッピーです

ということで早速見ていきましょう

a または b を検索

aorb.png

ヒント1: [ ] と ( ) と |

hint_1.png

a または b 以外を検索

notaorb.png

「ab」 を検索

ab.png

「ab」 を含む行を検索

abline.png

ヒント2: 「.」と「*」

dot_ast_2.png

「ab」 を含まない行を検索

notabline.png

VSCode 実行例

notabline_vscode.png

grep コマンド実行例

grep コマンドで使用する場合,-P をつける必要があります
また,語尾の .+$ が不要です

re_e.txt
123abc
123xyz
abc123
xyz123
user@user:/path/$ grep -P '^(?!.*ab)' re_e.txt

123xyz
xyz123

Python3 実行例

import re
pattern = re.compile("^(?!.*ab).+$")
pattern.search("aaaa")  # <re.Match object; span=(0, 4), match='aaaa'>
pattern.search("bbbb")  # <re.Match object; span=(0, 4), match='bbbb'>
pattern.search("0ab1")  # None

JavaScript 実行例

const reNotaorbLine = new RegExp("^(?!.*ab).+$")
console.log(reNotaorbLine.test("aaaa")) // true
console.log(reNotaorbLine.test("bbbb")) // true
console.log(reNotaorbLine.test("0ab1")) // false

先頭が ab で始まっている ab を検索

head_ab.png

ヒント3: ^ について

kasa.png

先頭が ab で始まっている行を検索

head_ab_line.png

末尾が ab で終わっている ab を検索

tail_ab.png

末尾が ab で終わっている行を検索

tail_ab_line.png

電話番号

電話番号.png

ヒント4: 数字と繰り返し

d.png

正規表現の使い方

既に上でチラッと出てますが,改めて使い方を見てみましょう

VSCode

  1. Ctrl + f を押すと右上に検索欄が表示されます
  2. 「.*」ボタンを押すと正規表現が使えるようになりますね
  3. 後は入力欄に正規表現を添えて差し上げるだけです

notabline_vscode.png

grep

grep '{正規表現}' re_e.txt

user@user:/path/$ grep '^ab' re_e.txt

abc123

Python3

# インポートは忘れずに
import re

# 正規表現, 検査する文字列
re.match("[ab]", "a")

# 何回も使うなら正規表現オブジェクト(pattern)を用意すると便利
pattern = re.compile("(a|b)")
pattern.search("a")

JavaScript

// 「/」で囲うパターン
const regex1 = /^(?!.*ab).+$/
console.log(regex1.test("aaaa"))

// RegExp
const regex2 = new RegExp("^(?!.*ab).+$")
console.log(regex2.test("aaaa"))

大小の区別

ignore.png

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?