2011-01-12 2 views
0

正規表現パターンを検索し、何らかの方法で一致を変換して置き換えるためのアプリケーションとプログラミング言語の構造を探しています。非常に単純な例です: "myCamelCasedString"を "my_camel_cased_string"に変換してください。 Rubyで置換前の正規表現の処理

それが簡単かつ簡潔です:PHPで

s = "myCamelCasedString".gsub(/[A-Z]/) { |m| "_" + m.downcase } 

それはテキストエディタjEditのも「BeanShellのスニペット」を介してこれをサポートしていますが、私はいつも持って長いのですが、また、可能

preg_replace_callback('/[A-Z]/', 
    // Using PHP 5.3 anonymous function as callback 
    function($m) { return "_" . strtolower($m[0]); }, 
    "myCamelCasedString"); 

それを行う方法を調べる。だから私は他の言語でこれをどうやってやるのだろうか?それを可能にする専用のアプリケーション/エディタがあるだろうか?(可能な変換の便利なリファレンスとともに)

データ:

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 

魔法のタレが "-p"

答えて

1

私はRubyはあなたが探している専用のアプリケーションだと思いますスイッチ。 "-e"スイッチで提供されるコードを "while gets(); ...; print $ _ end"にラップします。 '$ _'は、最も最近読み込まれた行を保持するPerlish変数です。 Perlで

+1

私は最近、著書「システム管理者のためのルビー」を読み、-peフラグを使用していくつかの素晴らしいワンライナーを見つけました。ルビインタプリタを 'awk'のように動作させる他のフラグがあります。すごいもの。 – chiborg

1

:私はしたいので、できるだけ多くのプログラミング言語に答え、この質問は、ここにJavaScriptの

$str =~ s/([A-Z])/'_'.lc$1/eg; 
0

あるソリューション:

s = "myCamelCasedString".replace(/[A-Z]/g, function(s) { 
    return '_'+s.toLowerCase(); 
}); 

はの詳細についてはdocumentation from MDCを参照してください。関数のパラメータです。サブパラメータとマッチオフセットは追加パラメータとして取得されます。ここで


Pythonのソリューションです:

import re 
re.sub(r"[A-Z]", lambda s: "_" + s.group(0).lower(), "myCamelCasedString")