我试图创建正则表达式,从日语单词中删除假名(红宝石):
<ruby><rb>二度</rb><rp>(</rp><rt>にど</rt><rp>)</rp>と</ruby> //old string
二度と // new string
我创建了new = old.replace(/<rt>.*<\/rt>/,'').replace(/<rp>.*<\/rp>/,'').replace('<ruby><rb>','').replace('</rb></ruby>','')
,它几乎可以工作。
当有多个ruby
代码时,它无法按预期工作:
<ruby><rb>息</rb><rp>(</rp><rt>いき</rt><rp>)</rp></ruby>を<ruby><rb>切</rb><rp>(</rp><rt>き</rt><rp>)</rp></ruby>らして
息らして //new string, using function above (wrong)
息を切らして //should be this
我对RegExp很新,所以我不确定如何处理这个。
答案 0 :(得分:1)
尝试使用
var newstring = oldstring.replace(/<rb>([^<]*)<\/rb>|<rp>[^<]*<\/rp>|<rt>[^<]*<\/rt>|<\/?ruby>/g, "$1");
这里的想法是捕获rb标签内容以将其置于替换模式中,使用其内容删除rp和rt标签,并删除ruby标记。
标签之间的内容用[^<]
(所有不是<
)描述,因为这些标签(rb,rp,rt)不能嵌套。< / p>