私は正規表現の分野に不慣れです。
以下に投稿するのは、私のコードの単純化された例だけです。
test_1,some_2,foo,bar_4,
文字列があります。たとえば、次の文字列に置き換えたいとしましょうtitle: test (1) title: some (2) title: foo () title: bar (4)
私が今持っているものは(これは動作します):
var test = "test_1,some_2,foo,bar_4,";
console.log(test.replace(/(.*?)(?:_(\d))?,/g, "title: $1 ($2)\n"));
出力:
title: test (1)
title: some (2)
title: foo ()
title: bar (4)
物事を正しくするために、最後の項目の後に昏睡状態を解消したいと考えています。リストは次のようになりますtest_1,some_2,foo,bar_4
(bar_4 の後にコンマなし)
したがって、新しいコードは次のとおりです。
var test = "test_1,some_2,foo,bar_4";
console.log(test.replace(/(.*?)(?:_(\d))?(?:,|$)/g, "title: $1 ($2) "));
何か間違ったものを出力します。最後に余分な空のマッチがあります:
title: test (1)
title: some (2)
title: foo ()
title: bar (4)
title: ()
私の質問は次のとおりです。なぜですか?修正方法は?実際の正規表現に改善の可能性はありますか?