我是一个perl newb,只需要做一些快速而肮脏的事情。我有文本行(来自.bib文件),如
Title = {{the Particle Swarm - Explosion, Stability, and Convergence in a Multidimensional Complex Space}},
如何写一个正则表达式,使得第二个字母后的第一个字母成为大写字母。
谢谢
一种方式,对于问题的问题
$string =~ s/{{\K(\w)/uc($1)/ge;
由此/e
将其作为代码评估替换方。 \K
让它掉落所有以前的比赛,所以{{
没有被“消耗”(因此不需要在替换方面重新输入)。
如果你想允许可能的空间:$string =~ s/{{\s*\K(\w)/uc($1)/ge;
,据我所知bibtex为什么不允许在curlies之间的空间,所以{\s*{
。
如果你需要简单的大写,那么\U$1
在替换方面就足够了,并且根据/e
的评论,不需要Grinnz修饰符。 \U
是一种通用的quote-like operator,因此也可用于正则表达式;请参阅Escape序列in perlre和in perlretut。
我推荐阅读perlretut教程。这将有很长的路要走。
但是,我还必须问:你确定你可能确实只是在你的整个文件中释放了它吗?它能抓住你需要的所有案件吗?它不会削减你不是故意的其他东西吗?