Perl,请更改{字符

时间:2019-02-13 21:55:55

标签: regex perl

我是perl newb,只需要快速又肮脏地完成工作即可。 我有一些文本行(来自.bib文件),例如

Title = {{the Particle Swarm - Explosion, Stability, and Convergence in a Multidimensional Complex Space}},

如何编写一个正则表达式,使第二个{之后的第一个字母大写。

谢谢

1 个答案:

答案 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 perlrein perlretut

我建议您仔细阅读教程perlretut。那将有很长的路要走。

但是,我还必须问:您是否确实可以肯定地将它们释放到整个文件中?它能满足您的所有需求吗?会不会剪掉您不想要的其他东西?