0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【正規表現】含む・含まない・Don't Cry・ドンフライ

0
Posted at

早めの結論

table.png

特定の単語を含まない行はこれ
^(?!.*pattern).+$

何の記事なの ?

abcdefabcxyz の内,
abcxyz だけ検索したいのになぁ...
みたいな事ありますよね

そんなあなたの願いを叶える記事です

先読みと後読み

  • 先読みは右から左に読んで検索するイメージ
  • 後読みは左から右に戻って検索するイメージ

肯定否定

  • 肯定はパターンに一致するもの
  • 否定はパターンに一致しないもの

肯定先読み

(?=pattern)
右に pattern がある文字列を検索です

肯定先読みの例

target の後ろに _pattern がある文字列のみ検索
target(?=_pattern)

  • target: (対象外)
  • target_pattern: (対象)
  • pattern_target: (対象外)
  • pattern_target_pattern: (対象)

否定先読み

(?!pattern)
右に pattern がない文字列を検索です

肯定先読みの例

target の後ろに _pattern がない文字列のみ検索
target(?!_pattern)

  • target: (対象)
  • target_pattern: (対象外)
  • pattern_target: (対象)
  • pattern_target_pattern: (対象外)

肯定後読み

(?<=pattern)
左に pattern がある文字列を検索です

肯定後読みの例

target の前に pattern_ がある文字列のみ検索
(?<=pattern_)target

  • target: (対象外)
  • target_pattern: (対象外)
  • pattern_target: (対象)
  • pattern_target_pattern: (対象)

否定後読み

(?<!pattern)
左に pattern がない文字列を検索です

否定後読みの例

target の前に pattern_ がない文字列のみ検索
(?<!pattern_)target

  • target: (対象)
  • target_pattern: (対象)
  • pattern_target: (対象外)
  • pattern_target_pattern: (対象外)

pattern を含まない行

pattern を含まない行を検索するぎょ~ (意気込み)

冗談は縦置き,^(?!.*pattern).+$ で行けます
なんでこれで行けるのか見ていきましょう

^()$

()のパターンにある文字列が先頭と末尾のもの
→ () のパターンにある文字列のみの行

例を見ていきましょう

// `^(egg)$` で検索した場合
// ↓ これは egg のみの行なので対象です
egg
// ↓ これは egg のみの行ではないなので対象外です
eggham

^().+$

()のパターンにある文字列の後に,
任意の文字列 1 つ以上続く文字列が先頭と末尾のもの
→ () のパターンにある文字列のみの行

例を見ていきましょう

// `^(egg).+$` で検索した場合
// ↓ これは egg の後に文字列が 1 つ以上ある行ではないなので対象外
egg
// ↓ これは egg の後に文字列が 1 つ以上ある行なので対象
eggham

^(?!.*pattern).+$

(?!.*pattern)
この位置から見て pattern を含まない

^(?!.*pattern).+$
先頭から見て pattern を含まない行(空行除く)

参考

0
0
1

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?