我需要为使用ALLCAPS而不是斜体的html清理一些文本。所以我想采取看起来像这样的东西:
Here is an artificial EXAMPLE of a piece of TEXT that
uses allcaps as a way of EMPHASIZING words.
并将其转换为:
Here is an artificial <em>example</em> of a piece of <em>text</em> that
uses allcaps as a way of <em>emphasizing</em> words.
我用正则表达式和记事本++标记这个,但是(你可以告诉我)我不知道如何使用它们的第一件事。
答案 0 :(得分:2)
Notepad ++正则表达式引擎没有这种可能性。
您可以在Perl中运行执行该作业的脚本,例如:
perl -pi.back -e "s#\b([A-Z]+)\b#'<em>'.lc($1).'</em>'/eg" yourfile.html
yourfile.html
将保存在yourfile.html.back
答案 1 :(得分:0)
以下是使用JavaScript的字符串替换方法执行此操作的方法:
var capfix = function (x) {
var emout = function (y) {
y = y.charAt(0) + "<em>" + y.toLowerCase() + "</em>" + y.charAt(y.length - 1);
};
return x.replace(/\s[A-Z]\s/g, emout);
};
执行刚刚通话:
capfix(yourData);
这假定“yourData”只是一个将数据表示为字符串的变量。如果您想使用Web工具,那么“yourData”可以表示某些输入控件的值,如下所示:
var yourData = document.getElementById("myinput").value;
alert(capfix(yourData));
为了完成这项工作,只需在您的网络工具输入中添加一个id属性,例如:
<textarea id="myinput"></textarea>
答案 2 :(得分:0)
据我所知,Notepad ++的regex engine还不够先进。
我建议使用编程语言来实现这一点,例如在PHP中你可以这样做:
echo preg_replace_callback('/([A-Z]{2,})/', create_function('$s', 'return "<em>".strtolower($s[0])."</em>";'), $s);
请务必在正则表达式中排除单个单词的合法首字母大写字母。
答案 3 :(得分:0)
AFAIK你不能在Notepad ++的Find\Replace
机制中改变套管。
如果只需插入<em>
代码,则可以执行以下操作:
在Find
框中输入(\s+)([A-Z]+)(\s+)
,Replace
类型\1<em>\2</em>\3
中的abd。
您可以在TextFX
子菜单中尝试一些TextFX Characters
工具。