正規表現を使用して、Notepad++ の各行から年のみを抽出して表示する

正規表現を使用して、Notepad++ の各行から年のみを抽出して表示する

私もそんな弦を持っている

hack SIGN (2005) g$
5 Cm Per Second - Makoto Shinkai Collection (2007)
Abenobashi (2002) gd
Ai City - La Notte Dei Cloni (1986) dfg
AIKA (1997)
Anna Dai Capelli Rossi (1979) £$"£

Notepad++で表示したい

2005
2007
2002
1986
1997
1979

この正規表現を使用していますが、うまく機能していないようです

探す:

\(\b(19|20)\d{2}\b\)

交換する

r\n\1\1

しかし、このようなテキストが返されます

hack SIGN r
2020 g$
5 Cm Per Second - Makoto Shinkai Collection r
2020
Abenobashi r
2020 gd
Ai City - La Notte Dei Cloni r
1919 dfg
..

この正規表現は期待通りには動作しません

答え1

Ctrl+Hを押して以下の指示に従ってくださいメモ帳++各行ごとに 4 桁の数字のグループを一致させ、それらの文字だけを出力して、期待どおりの結果を提供します。

  1. 検索対象: ^.*?(\d{4}+).*$

    ここに画像の説明を入力してください

  2. と置換する: $1

  3. 検索モード: Regular expression
  4. プレスReplace All

結果

2005
2007
2002
1986
1997
1979

ここに画像の説明を入力してください


その他のリソース

Notepad++ で正規表現を使用する方法

アンカー

アンカーは、特定の文字ではなく、行内の位置と一致します。

^

これは行の先頭に一致します (セット内で使用される場合を除く、上記を参照)。

$

これは行の末尾に一致します。

文字の範囲または種類

[^...]

セット内の文字の補数。

単一文字一致

., \c

任意の文字に一致します。「. は改行に一致します」というボックスをチェックすると、ドットは実際にそのように動作し、「任意の」文字を複数行に渡って実行できるようになります。このオプションのチェックを外すと、. は行内の文字にのみ一致し、行末文字 (\r および \n) には一致しません。

乗算演算子

*

これは、前の文字の 0 回以上のインスタンスに一致します。たとえば、Sa*m は Sm、Sam、Saam などと一致します。

*?

前のグループの 0 個以上、ただし最小限: 「貪欲な」* 演算子の場合のように最長の文字列ではなく、最短の一致文字列。したがって、テキスト margin-bottom: 0; に適用された m.*?o は margin-bo と一致しますが、m.*o は margin-botto と一致します。

{n}

適用する要素の n 個のコピーと一致します。

+

これは、前の文字の 1 回以上のインスタンスに一致します (可能な場合)。

グループ

(...)

括弧は正規表現のサブセットを表します。括弧の内容に一致する文字列は、( )後方参照または置換操作の一部として再利用できます。以下の「置換」を参照してください。

グループはネストできます。

(?<some name>...), (?'some name'...),(?(some name)...)

文字の範囲または種類

\d

0~9の範囲の数字。[[:桁:]]


代替品

$n, ${n}, \n

番号 n の部分式に一致するものを返します。負のインデックスは許可されません。

答え2

  • Ctrl+H
  • 検索対象:^(?:.*?\(((?:19|20)\d{2})\).*|.*\R)$
  • と置換する:$1
  • チェック ラップアラウンド
  • 正規表現をチェック
  • チェックしないでください. matches newline
  • Replace all

説明:

^                   : beginning of line
  (?:               : start non capture group
    .*?             : 0 or more any character but newline, not greedy
    \(              : open parenthesis
      (             : start group 1
        (?:19|20)   : non capture group, 19 or 20
        \d{2}       : 2 digits
      )             : end group 1
    \)              : close parenthesis
    .*              : 0 or more any character but newline
   |                : OR
    .*              : 0 or more any character but newline
    \R?             : any kind of linebreak, optional
  )                 : end non capture group
$                   : end of line

次のような入力があるとします:

hack SIGN (2005) g$
5 Cm Per Second - Makoto Shinkai Collection (2007)
Abenobashi (2002) gd
Ai City - La Notte Dei Cloni (1986) dfg
AIKA (1997)
Anna Dai Capelli Rossi (1979) £$"£
123456 1234
(123) 4567

得られたもの:

2005
2007
2002
1986
1997
1979

関連情報