Regex 在替换之前处理正则表达式匹配

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

我正在寻找应用程序和编程语言结构来搜索正则表达式模式,以某种方式转换匹配项,然后替换它。一个非常简单的示例:将“myCamelCasedString”转换为“my_camel_cased_string”

在Ruby中,它简单而简洁:

 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
。很棒的东西。