- ベストアンサー
正規表現の意味を教えてください
function underscore($camelCasedWord) { return strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $camelCasedWord)); }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
補足 リプレース先の指定の\\1のPHPの解釈は $1の意味でした。よって \wA => \w_A \wB => \w_B と置換されますね。
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
逆のような気がする>#2. camelCasedWord → (置換で) camel_Cased_Word → (strtolower で) camel_cased_word ではないかと.
補足
AaaBbbをaaa_bbbに変換する関数ですね
- yyr446
- ベストアンサー率65% (870/1330)
ちがいますね $camelCasedWord とあるからカメライズですね ハイフン+小文字アルファベットを大文字アルファベットに直すやつですかね
補足
AaaBbbをaaa_bbbに変換する関数ですね でも正規表現(?<=\\w)([A-Z])の意味がわかりません
- yyr446
- ベストアンサー率65% (870/1330)
パターンを分解すると ?<= 肯定の戻り読み \w 英数字の単語 \\w \wをエスケープしてるから単なる\wという文字(?) ※それとも「?<=\」で何か意味があったかも [A-Z] A-Zの文字 よって、\wの後ろのA-Zが続く文字を_\\1にリプレースする \wA => \w_\\1 \wB => \w_\\1 ちがうかな?
補足
(?<=\\w)([A-Z]) の場合 underscore("AaaBbb")=>aaa_bbb (?=\\w)([A-Z]) の場合 underscore("AaaBbb")=>_aaa_bbb この < はどうな役割してるのはわかりません
お礼
やっとわかりました。ありがとうございました。