0

次の文字列があります3}HFB}4AF4}1 -M}1.

正規表現を使用してこの文字列を検索しました:

([0-9])(\})([A-Z]{3})(\})([0-9][A-Z]{2}[0-9])(\})([0-9])(\s\-)([A-Z])(\})([0-9]).

}をに置き換えたい0。私が探している結果は です30HFB04AF401-M01。私が使用しているツールは Regex Buddy です

4

3 に答える 3

1

考えられる解決策

問題が解決しました?JavaScriptでは少なくとも:-)

"3}HFB}4AF4}1 -M}1".replace(/\}/g, "0");
// "30HFB04AF401 -M01"

私は要点を見逃していますよね?

言語がJavaScriptであると仮定すると、次のように書くことができます。

"dfghj456783}HFB}4AF4}1 -M}1fghjkl8765".replace(/(?:[\d\w\s]+)([0-9]}[A-Z]{3}}[0-9][A-Z]{2}[0-9]}[0-9] -[A-Z]}[0-9])(?:[\d\w\s]+)/g, function () {
    return arguments[1].replace(/}/g, "0");
});

別の話かもしれませんが、他の言語で可能なこと。

詳細については、RegexBuddyのホームをお試しください。

于 2012-12-04T22:09:47.357 に答える
0

Regex Buddy が使用する JGSoft Lanugage の書式設定の解決策を見つけることができました。これは、自分の考えを正しい方向に導くのに役立つ提案を提供してくれたすべてのおかげです。

解決策(私はまだ正規表現の初心者なので、構文は効率的ではないかもしれませんが、うまくいきます!!)

後方参照と構文を使用してグループを割り当てる正規表現の代わりに、グループ名を使用し$ます。

したがって、文字列または同様の文字列0で forを置き換えます。次の検索および置換構文を使用しました}3}HFB}4AF4}1 -M}1

探す :(?<Gp1>([0-9]))(?:})(?<Gp2>([A-Z]){3})(?:})(?<Gp3>([0-9])([A-Z]{2})([0-9]))(?:})(?<Gp4>([0-9]))(?:\s-)(?<Gp5>([A-Z]))(?:})(?<Gp6>[0-9])

交換 :${Gp1}0${Gp2}0${Gp3}0${Gp4}-${Gp5}0${Gp6}

結果 :30HFB04AF401-M01

于 2012-12-05T21:22:47.057 に答える
0

したがって、文字列のインスタンスを検索するための式が既に取得されています。これで、グループを使用して文字を置き換えるか、見つかった文字列に対して別の正規表現を使用して、その}中の文字group(0)(入力の一致部分全体) を置き換えることができます。私は確かに後者を好みます。

Fred はすでに置換メソッドを作成しているようですので、ここでは繰り返しません。

于 2012-12-05T00:36:03.980 に答える