我是perl newb,只需要快速又肮脏地完成工作即可。 我有一些文本行(来自.bib文件),例如
Title = {{the Particle Swarm - Explosion, Stability, and Convergence in a Multidimensional Complex Space}},
如何编写一个正则表达式,使第二个{之后的第一个字母大写。
谢谢
答案 0 :(得分:3)
一种方式,针对所提出的问题
$string =~ s/{{\K(\w)/uc($1)/ge;
由此/e
使其将替换方作为代码进行评估。 \K
使其放弃所有先前的匹配,因此{{
不会被“消耗”(因此无需在替换端重新键入)。
如果您希望留出可能的空间:$string =~ s/{{\s*\K(\w)/uc($1)/ge;
,据我所知bibtex,为什么也不允许在curly之间留出空间,所以{\s*{
。
如果只需要简单的大写字母,则\U$1
在替换方面就足够了,并且不需要/e
修饰符,Grinnz的每个注释都可以。 \U
是通用的quote-like operator,因此也可以在正则表达式中使用;参见转义序列 in perlre和in perlretut。
我建议您仔细阅读教程perlretut。那将有很长的路要走。
但是,我还必须问:您是否确实可以肯定地将它们释放到整个文件中?它能满足您的所有需求吗?会不会剪掉您不想要的其他东西?