使用正则表达式

时间:2016-08-26 22:04:12

标签: html regex sublimetext2 dreamweaver

我正在尝试使用HTML中的正则表达式替换一些字符串,但是瑞典字符会让我的生活变得困难。

它开始看起来像这样(我使用的是虚拟文本而不是真正的瑞典语):

<td class="swedish">abc defg&aring; hijk lmnop&auml;</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&aring; hijk lmnop&auml;</td>
    <td><?php audioButton("../../audio/lessons/01/abc defg&aring; hijk lmnop&auml;","abc defg&aring; hijk lmnop&auml;"); ?></td>
    <td><?php audioButton("../../audio/lessons/01/slow/abc defg&aring; hijk lmnop&auml;_slx","abc defg&aring; hijk lmnop&auml;_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中有特殊代码(&auml; - &ouml; and &aring;)。我必须分别用ae,oe和aa替换该代码的每个实例,并在每个单词之间加上下划线。这必须发生在audiobutton内部。

最终结果必须如下:

<td class="swedish">abc defg&aring; hijk lmnop&auml;</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>

这是我的正则表达式识字失败的地方。它可能很简单,但我看不到它。我真的很感激一些帮助。如果我可以一步而不是两步完成整个过程,那将是特别好的。

1 个答案:

答案 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?&auml;?ae?g' -e 's?&ouml;?oe?g' -e 's?&aring;?aa?g' -e 's?\([a-z]\) ?\1_?g') ;
    sed -i -e "s|${real_line}|${new_line}|g" swedish.txt ;
done