regex - notepad++ で最後の文字「A」を持つレコードを見つけるにはどうすればよいですか?

okwaves2024-01-25  12

notepad++ に巨大な JSON ファイルがあります。私の専門分野の 1 つは製品です。値の最後に文字 A が含まれるすべての商品を調べたいと考えています。

これは私のデータです

{
    "ID": 689,
    "product": "GIPA",
    "JobID": 66349,
    "FriendlyName": "Android",
},
{
    "ID": 689,
    "product": "TKNA",
    "JobID": 66350,
    "FriendlyName": "Android",
},
{
    "ID": 689,
    "product": "TNRG",
    "JobID": 66351,
    "FriendlyName": "Android",
},
{
    "ID": 689,
    "product": "GAJT",
    "JobID": 66352,
    "FriendlyName": " Android",
},

2 つの方法を試しましたが、うまくいきません

"product": "^[a-z|A-Z|0-9]+[^A]\s?I{1}$"

そして

"product": ".*(\A)$"

最初の 2 つのレコードを見つけるにはどうすればよいですか?

値が A で終わらないすべての製品ラインを照合するという意味ですか? "積": "[a-zA-Z0-9]+(? – Wiktor Stribiżew

2020 年 9 月 4 日 16:47

ご存知のとおり、私が質問したのは、あなたが試したパターンが以前に書いたことと矛盾しているためです。次に、「製品」: 「[a-zA-Z0-9]*A」? "製品": "[^"]*A"?一致するものを見つけるだけで、必要な最終結果は何ですか?交換しませんか?

– Wiktor Stribiżew

2020 年 9 月 4 日 16:48



------------------------

正規表現に関する主な問題点に注意してください。

"製品": "^[a-z|A-Z|0-9]+[^A]\s?I{1}$"パターン内に ^ が含まれているため、文字列の途中に文字列の始まりがなく、^ の前の改行に一致するパターンがないため、一致することはありません。 [a-z|A-Z] は文字に一致し、かつ | にも一致します。 | は使用しないでください。リテラルに一致するつもりがない場合は、文字クラス内で | char ([...] の間の「代替」の意味が失われます) [^A] は、A を除く任意の文字と一致します。 {1} は常に冗長であるため、削除してください。式内のすべてのパターンは、デフォルトで 1 回試行されます。 "製品": ".*(\A)$"含まれています\A、文字列アンカーの開始。パターンも無効になり、どの文字列とも一致しなくなります。

使用できます

"product": "[^"]*A"

一致します

"製品": " - リテラル文字列 [^"]* - "" 以外の 0 個以上の文字 「あ」 -A」弦。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。