私は正規表現を正常に使用していますが、おそらく少し成功しすぎているため、いくつかの例外を追加したいと思います。特定の単語に影響を与えたくないのです。(背景については、以前の質問を参照してください...これにより、特定の問題が解決されました。例外を追加する必要があります)。
つまり、要約すると、私がする必要があるのは次のとおりです。
[a-z]_[a-z]
のようなパターンを見つけてsome_var
ください_var
。- 二重引用符内にある一致は無視されるため、
"this_file.jpg"
. - キーワードの特定のリストでこれらの一致を無視するため、などではありません
size_t
(例外のリストがあります)。
適切な一致が見つかったら、それを基本的に ( some_var
-> someVar
) キャメルケースに変換します。これは、前の質問で正常に回答されています。
これはRubyであり、これは私がこれまでにコードのために持っているものです:
exclusions = ["size_t", "other_t"]
replacement = text.gsub(/"[^"]+"|_[a-z]/) {|match| (match.length > 2)? match : match[1].upcase } # doesn't do any exclusions from my list, only handles the quoted case.
私はちょっと途方に暮れています。ある種の否定的な先読みが必要だと思いますが、その方法がよくわかりません(正規表現の経験があまりありません)。
サンプル
入力:
this_var "that_var" size_t
出力:
thisVar "that_var" size_t
つまり、引用符で囲んだものはそのままにしておく必要があり、除外リストにあるものもそのままにしておく必要があります。一致するその他の文字列はすべて[a-z]_[a-z]
変更する必要があります。