我正在尝试使用HTML中的正则表达式替换一些字符串,但是瑞典字符会让我的生活变得困难。
它开始看起来像这样(我使用的是虚拟文本而不是真正的瑞典语):
<td class="swedish">abc defgå hijk lmnopä</td>
<td><?php audioButton("../../audio/lessons/01/some_old_text","some_old_text"); ?></td>
<td><?php audioButton("../../audio/lessons/01/slow/some_old_text_slx","some_old_text_slx","1"); ?></td>
步骤1:我设法将字符串放在audiobutton中的第一个标签中,所以它看起来像这样:
<td class="swedish">abc defgå hijk lmnopä</td>
<td><?php audioButton("../../audio/lessons/01/abc defgå hijk lmnopä","abc defgå hijk lmnopä"); ?></td>
<td><?php audioButton("../../audio/lessons/01/slow/abc defgå hijk lmnopä_slx","abc defgå hijk lmnopä_slx","1"); ?></td>
您不必阅读此内容,但我使用以下内容进行了阅读:
查找
<td class="swedish">(.*)</td>\n.*<td><\?php audioButton\("(.*)/.*",".*"\); \?></td>\n.*<td><\?php audioButton\("(.*)/.*",".*","1"\); \?></td>
替换
<td class="swedish">$1</td>
<td><?php audioButton("$2/$1","$1"); ?></td>
<td><?php audioButton("$3/$1_slx","$1_slx","1");?></td>
即使对于像我这样的菜鸟,它也相当简单。
第2步:现在这是我的问题开始的地方。瑞典字符ä,ö和å在HTML中有特殊代码(ä - ö and å
)。我必须分别用ae,oe和aa替换该代码的每个实例,并在每个单词之间加上下划线。这必须发生在audiobutton内部。
最终结果必须如下:
<td class="swedish">abc defgå hijk lmnopä</td>
<td><?php audioButton("../../audio/lessons/01/abc_defgaa_hijk_lmnopae","abc_defgaa_hijk_lmnopae"); ?></td>
<td><?php audioButton("../../audio/lessons/01/slow/abc_defgaa_hijk_lmnopae_slx","abc_defgaa_hijk_lmnopae_slx","1"); ?></td>
这是我的正则表达式识字失败的地方。它可能很简单,但我看不到它。我真的很感激一些帮助。如果我可以一步而不是两步完成整个过程,那将是特别好的。
答案 0 :(得分:0)
这是一个bash循环,可以根据需要替换audioButton事件:
for line in $(egrep "audioButton" swedish.txt | sed -e 's?\ ?::ZZqC::?g') ; do
real_line=$(echo "${line}" | sed -e 's?::ZZqC::?\ ?g') ;
new_line=$(echo "${real_line}" | sed -e 's?ä?ae?g' -e 's?ö?oe?g' -e 's?å?aa?g' -e 's?\([a-z]\) ?\1_?g') ;
sed -i -e "s|${real_line}|${new_line}|g" swedish.txt ;
done