正则表达式非常适合文本编辑。但有时他们还不够。 例如,假设我有一个包含1000个句子的文本,第一个字符为小写:
我的名字是Foo。 你好,你好吗? 我真的很喜欢这个论坛。 ... 等
我想转换它们,以便第一个字母大写。 这可以使用正则表达式,但是您需要的正则表达式非常冗长且不整洁。 我最喜欢的正则表达式之一就是可以在括号中捕获字符串的一部分,并将它们用于$ i或\ i或其他任何替换。
我的问题是:你知道编辑器的编辑器或插件,你可以用某种语言处理这个捕获组(比方说,Python?)。这将允许我们做以下事情:
搜索:
的 ^(。)(。*)$
并用以下内容代替:
的 toUpperCase($ 1)$ 2
如果你知道一个这样的系统,请告诉我。 提前谢谢,
曼努埃尔
答案 0 :(得分:5)
Regexbuddy获胜。杰夫阿特伍德的博客(编码恐怖片)mentions it a few times.
答案 1 :(得分:4)
Awk提供了Regex集成与命令式编程的混合。
答案 2 :(得分:3)
答案 3 :(得分:2)
GNU Emacs也可以这样做(如果你不介意Emacs Lisp和不常见的GUI)。它仍然使用旧的POSIX Regex语法,而不是新的Perl语法(这意味着你必须逃避捕获组括号)。
搜索
^\(.\)
替换为
\,(upcase \1)
你完成了。当然,您可以以交互方式进行操作,当然也可以从那里调用自己的Lisp宏。
答案 4 :(得分:1)
UltraEdit有一个完整的core JavaScript engine built-in,包括正则表达式功能。脚本引擎有full access to UE's DOM,所以它看起来可能适合你。
答案 5 :(得分:1)
Komodo Edit允许您使用几种脚本语言(包括Python,Perl和PHP)创建代码片段,您可以在选定的文本上执行(或者,我相信,跨文件)。
因此,如果您想在编辑器中运行一个遍历每一行(或每27行)的小脚本并将第一个字母大写,您可以在此编辑器中将其保存并将其保存为稍后运行的代码段。 / p>
此外,它允许您创建对话框以填充代码的一部分,这样您就可以编写一次代码,然后在您需要的任何正则表达式上运行任意python代码,而无需再次触及基本脚本。
答案 6 :(得分:0)
各种编辑器都有自己的regex语法扩展,但我发现编写一个简短的程序比1)学习新的语法,或2)学习新的编辑器更容易。但后来我已经知道如何编程了。 :)
对于您的示例, Textpad包含\U
等转义码以及其他转义码。