Regex 在替换之前处理正则表达式匹配
我正在寻找应用程序和编程语言结构来搜索正则表达式模式,以某种方式转换匹配项,然后替换它。一个非常简单的示例:将“myCamelCasedString”转换为“my_camel_cased_string” 在Ruby中,它简单而简洁:Regex 在替换之前处理正则表达式匹配,regex,language-agnostic,pattern-matching,transform,Regex,Language Agnostic,Pattern Matching,Transform,我正在寻找应用程序和编程语言结构来搜索正则表达式模式,以某种方式转换匹配项,然后替换它。一个非常简单的示例:将“myCamelCasedString”转换为“my_camel_cased_string” 在Ruby中,它简单而简洁: s = "myCamelCasedString".gsub(/[A-Z]/) { |m| "_" + m.downcase } 在PHP中,它更长,但也是可能的 preg_replace_callback('/[A-Z]/', // Using
s = "myCamelCasedString".gsub(/[A-Z]/) { |m| "_" + m.downcase }
在PHP中,它更长,但也是可能的
preg_replace_callback('/[A-Z]/',
// Using PHP 5.3 anonymous function as callback
function($m) { return "_" . strtolower($m[0]); },
"myCamelCasedString");
文本编辑器jEdit也通过一个“Beanshell代码段”支持这一点,但我总是要查看如何做到这一点。那么-我该如何在其他语言中做到这一点?是否有专门的应用程序/编辑器让我做到这一点(以及可能的转换的方便参考)?我认为Ruby是您正在寻找的专门应用程序: 数据:
some other text
myCamelCasedString
here is yetAnotherCamelCasedString
脚本:
$ ruby -pe '$_.gsub!(/[A-Z]/) { |m| "_" + m.downcase }' <input
some other text
my_camel_cased_string
here is yet_another_camel_cased_string
$ruby-pe'$\.gsub!(/[A-Z]/){m |““+m.downcase}'在Perl中:
$str =~ s/([A-Z])/'_'.lc$1/eg;
因为我想用尽可能多的编程语言来回答这个问题,下面是JavaScript解决方案:
s = "myCamelCasedString".replace(/[A-Z]/g, function(s) {
return '_'+s.toLowerCase();
});
import re
re.sub(r"[A-Z]", lambda s: "_" + s.group(0).lower(), "myCamelCasedString")
有关函数参数的详细信息,请参阅。可以将子匹配和匹配偏移作为附加参数
以下是Python的解决方案:
s = "myCamelCasedString".replace(/[A-Z]/g, function(s) {
return '_'+s.toLowerCase();
});
import re
re.sub(r"[A-Z]", lambda s: "_" + s.group(0).lower(), "myCamelCasedString")
我最近读了《RubyforSysadmins》一书,发现了一些使用-pe标志的令人惊讶的单行程序。还有其他标志使ruby解释器的行为类似于awk
。很棒的东西。