0

日本語の単語からふりがな (ルビ) を削除する正規表現を作成しようとしています。

<ruby><rb>二度</rb><rp>(&lt;/rp><rt>にど</rt><rp>)&lt;/rp>と&lt;/ruby> //old string
二度と // new string

私が作成new = old.replace(/<rt>.*<\/rt>/,'').replace(/<rp>.*<\/rp>/,'').replace('<ruby><rb>','').replace('</rb></ruby>','')し、動作します...ほぼ。

複数のrubyタグがある場合、希望どおりに機能しません。

<ruby><rb>息&lt;/rb><rp>(&lt;/rp><rt>いき</rt><rp>)&lt;/rp></ruby>を&lt;ruby><rb>切&lt;/rb><rp>(&lt;/rp><rt>き&lt;/rt><rp>)&lt;/rp></ruby>らして
息らして //new string, using function above (wrong)
息を切らして //should be this

私は RegExp に非常に慣れていないので、これを処理する方法がわかりません。

4

1 に答える 1

1

使ってみて

var newstring = oldstring.replace(/<rb>([^<]*)<\/rb>|<rp>[^<]*<\/rp>|<rt>[^<]*<\/rt>|<\/?ruby>/g, "$1");

ここでのアイデアは、rb タグのコンテンツをキャプチャして置換パターンに入れることです。rp タグと rt タグはコンテンツと共に削除され、ruby タグも削除されます。

これらのタグ (rb、rp、rt) はネストできないため、タグ間の内容は[^<] (all that not a <)で記述されます。

于 2013-08-22T10:04:42.153 に答える