求“一次性分别对应替换多组字符串”的正则表达式

针对EmEditer,如何对文本中多个字或词进行分别对应替换?比如:“鲁迅〔1〕先生以杂文〔2〕为批判武器,所向披靡〔3〕地拼杀在旧中国的文坛上。”要一次性将文中的〔1〕... 针对 EmEditer,如何对文本中多个字或词进行分别对应替换?
比如:
“鲁迅〔1〕先生以杂文〔2〕为批判武器,所向披靡〔3〕地拼杀在旧中国的文坛上。”
要一次性将文中的〔1〕〔2〕〔3〕……,分别对应替换为①②③……。如果提供的正则表达式好用,一定加分奖励。当然,虚拟的分数并不是我们追求的本意。先致谢意!
注意:〔1〕〔2〕〔3〕……等标注,没有规律性。强调:需要的正则表达式一定针对 EmEditer 文本编辑,在“查找替换”窗口一次设定完成,不是网页代码。
展开
 我来答
hbpaoxiao2
2011-04-04 · TA获得超过2897个赞
知道大有可为答主
回答量:1962
采纳率:72%
帮助的人:867万
展开全部
你这个替换和正则没关系,只是需要替换的内容比较多而已。
方法一:
使用EmEditor手动录制宏,在一个文本内把所有需要的内容都替换一遍,保存宏,到其他文本中就可以使用了。
方法二:
自己写简单的宏。
新建一个文本,输入以下内容:
document.selection.Replace("〔1〕","①",eeReplaceAll);
document.selection.Replace("〔2〕","②",eeReplaceAll);
……
依次类推,全部写完后,保存为xxx.jsee
然后宏》选择,选中你刚才写的宏,然后宏》运行宏,他就自己替换了。
如果需要替换的〔1〕格式不一,使用以下命令,
document.selection.Replace("[《(〔\\(]1[\\))》〕]","①",eeReplaceAll | eeFindReplaceRegExp);
对应的是(1)(1)《1》〔1〕全部替换为①,具体形式需要自己加到中括号内。
半角的括号需要转义,在脚本中前面需要加两个\\。

同时替换所有已打开文件。
把下面的代码复制到新文本中,保存为xx.jsee,剩下的操作方法同上。
var num = editor.Documents.Count;
for(i=0;i<=num,i++)
{
editor.ExecuteCommandByID(5376 + i);
document.selection.Replace("〔1〕","①",eeReplaceAll);
document.selection.Replace("〔2〕","②",eeReplaceAll);
……
}

大括号中的省略号部分自己改成需要的。
替换时,只打开需要替换的文本,其他不要开。
追问
第一种方法,是我正在使用的。你介绍的其它方法,对于灵活设定“宏”内容很实用,给了我举一反三的启发。谢谢!
s_hover
2011-04-03
知道答主
回答量:14
采纳率:0%
帮助的人:28.5万
展开全部
可以试试这样子:

<?php
$string = "鲁迅〔1〕先生以杂文〔2〕为批判武器,所向披靡〔3〕地拼杀在旧中国的文坛上。";

$patterns[0] = "/\〔1\〕/";
$patterns[1] = "/\〔2\〕/";
$patterns[2] = "/\〔3\〕/";

$replacements[0] = "①";
$replacements[1] = "②";
$replacements[2] = "③";

echo preg_replace($patterns, $replacements, $string);
?>
更多追问追答
追问
针对 EmEditer 文本编辑,在“查找替换”窗口一次设定完成,不是网页程序代码。谢谢!
追答
哦, 看错了. 要在“查找替换”窗口一次设定完成的功能, 可以用多次“查找替换”来实现呀,何苦钻这牛角尖。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式