我想使用正则表达式(最好是在sublimetext2中)来替换以下内容:
<td class="etword">et alfabet</td>
<td class="etword"> </td>
用这个:
<td class="etword">et alfabet</td>
<td class="etword"><?php audioButton("../../audio/words/et_alfabet","et_alfabet");?></td>
非常感谢!
答案 0 :(得分:2)
找到:
<td class="etword">(.*?)</td>\n<td class="etword"> </td>
替换为
<td class="etword">$1</td>\n<td class="etword"><?php audioButton("../../audio/words/$1","$1");?></td>
这将填充第二个表格单元格。但是在URL中,如果第一个单元格中有空格,则会有空格。不幸的是,正则表达式不能这样做,因此我们必须使用Sublime Text的其他一些功能来完成它。
搜索(CTRL + F)audioButton\(".*?\);
并点击“全部查找”。这样,所有audioButton
- 调用都将被选中。然后,在不单击任何其他内容的情况下,再次打开搜索/替换面板(CTRL + H)并将(空格字符)替换为
_
(下划线)。确保激活“在选择中” -option。然后点击“全部替换”,一切都应该没问题。
答案 1 :(得分:0)
使用像HTMLAgility http://htmlagilitypack.codeplex.com/
这样的HTML解析器可以更轻松地完成此类活动以最好的方式讲课。我认为你想要捕获第一个etword内部文本并将其拉入替换字段。
我确信这可以在崇高中重写。在powershell中,我将通过以下方式实现这一目标:
$Matches= @()
$String = '<td class="etword">et alfabet</td>
<td class="etword"> </td>'
# find the value in the preceding cell. if there arn't any matching strings then skip
if ($String -imatch '<td[^>]*class="etword"[^>]*?>([^<]*?)</td>[\s\n]*?<td[^>]*class="etword"[^>]*?> </td>' ) {
$FoundText = $Matches[1]
$WholeMatchingString = $Matches[0]
write-host "Found Text: " $FoundText
write-host "WholeMatchingString: " $WholeMatchingString
# create a new string with the desired values, by replacing with the correct text
$NewString = $WholeMatchingString -replace " ", $('<?php audioButton("../../audio/words/' + $FoundText + '","' + $FoundText + '");?>')
Write-Host "NewString: " $NewString
# replace the whole matcing string with the New string
$String = $String -replace $WholeMatchingString, $NewString
Write-Host "Result: " $String
} # end if
产生以下输出:
Found Text: et alfabet
WholeMatchingString: <td class="etword">et alfabet</td><td class="etword"> </td>
NewString: <td class="etword">et alfabet</td><td class="etword"> </td>
Result: <td class="etword">et alfabet</td><td class="etword"><?php audioButton("../../audio/words/et alfabet","et alfabet");?></td>
在powershell中,$ Matches数组会自动填充最后一个-match操作的结果。