• ベストアンサー

正規表現の意味を教えてください

function underscore($camelCasedWord) { return strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $camelCasedWord)); }

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

補足 リプレース先の指定の\\1のPHPの解釈は $1の意味でした。よって  \wA => \w_A  \wB => \w_B と置換されますね。

likewind
質問者

お礼

やっとわかりました。ありがとうございました。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

逆のような気がする>#2. camelCasedWord → (置換で) camel_Cased_Word → (strtolower で) camel_cased_word ではないかと.

likewind
質問者

補足

AaaBbbをaaa_bbbに変換する関数ですね

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

ちがいますね $camelCasedWord とあるからカメライズですね ハイフン+小文字アルファベットを大文字アルファベットに直すやつですかね

likewind
質問者

補足

AaaBbbをaaa_bbbに変換する関数ですね でも正規表現(?<=\\w)([A-Z])の意味がわかりません

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

パターンを分解すると ?<= 肯定の戻り読み \w 英数字の単語 \\w \wをエスケープしてるから単なる\wという文字(?)    ※それとも「?<=\」で何か意味があったかも [A-Z] A-Zの文字 よって、\wの後ろのA-Zが続く文字を_\\1にリプレースする  \wA => \w_\\1  \wB => \w_\\1 ちがうかな?

likewind
質問者

補足

(?<=\\w)([A-Z]) の場合 underscore("AaaBbb")=>aaa_bbb (?=\\w)([A-Z]) の場合 underscore("AaaBbb")=>_aaa_bbb この < はどうな役割してるのはわかりません

関連するQ&A