任何带重音的单词都需要删除重音,然后在单词的末尾添加相应的数字。
**实施例:*
gàr must appear as gar3
▶单词只会显示严重的重音和严重的重音,分别应该在单词的末尾加上2和3。
▶单词可能伴随着空格,制表符,返回,连字符(长或短),括号,问号等。
▶单词将包含非ASCII字符,如shin(带有一个有趣的倒置帽子的s)
任何人都可以建议正确的结构,正则表达式和替换模式吗?
谢谢!
以下是测试样本:
14 IGI <DIŠ>⌈x⌉-èr-ra
15 IGI <DIŠ>bu-ṣí-ia
16 IGI <DIŠ>su-ka-lum
17 IGI <DIŠ>ì-lí-tu-[...x-...x]
18 ⌈MU⌉<ON:>KI.BAL.BAR.RÚ:KI
应该导致:
14 IGI <DIŠ>⌈x⌉-er3-ra
15 IGI <DIŠ>bu-ṣi2-ia
16 IGI <DIŠ>su-ka-lum
17 IGI <DIŠ>i3-li2-tu-[...x-...x]
18 ⌈MU⌉<ON:>KI.BAL.BAR.RU2:KI
答案 0 :(得分:1)
这是一个不活跃的问题,但由于它可能对搜索类似问题的人有用,这里的代码完全符合您的要求:
use utf8;
use Unicode::Normalize;
my $text='IGI <DIŠ>bu-ṣí-ia'; #your input data
my $x=NFD($text); #Normalization Form D (1)
$x=~s/\x{300}/3/g; #substitute grave accents with number 3 (2)
$x=~s/\x{301}/2/g; #substitute acute accents with number 2 (2)
$x=NFC($x); #Normalization Form C (1)
print $x; #prints "IGI <DIŠ>bu-ṣi2-ia"
1 我不是Unicode专家,所以我不足以解释清楚&amp;这些功能究竟是做什么的。 These articles或Google可能会让您有更好的想法。
2 检查Unicode table的值是否为300&amp; 301。