- ベストアンサー
正規表現の意味を教えてください
yyr446の回答
- yyr446
- ベストアンサー率65% (870/1330)
パターンを分解すると ?<= 肯定の戻り読み \w 英数字の単語 \\w \wをエスケープしてるから単なる\wという文字(?) ※それとも「?<=\」で何か意味があったかも [A-Z] A-Zの文字 よって、\wの後ろのA-Zが続く文字を_\\1にリプレースする \wA => \w_\\1 \wB => \w_\\1 ちがうかな?
関連するQ&A
- 正規表現について
電話番号の正規表現について質問です。 $value = '000-111-2222'; これだけだと通りますが function tel( $value ) { return !preg_match( '/^\d{2,3}\-\d{3,4}\-\d{4}$/', $value ); } 市外局番がなくても通るようにしたくこのようにしましたがはじかれます^^; function tel( $value ) { return !preg_match( '/^\d{2,3}\-\d{3,4}\-\d{4}$ | ^\d{2,4}\-\d{3,4}$/', $value ); } いずれのケースにも当てはまらないのではじくようにしたいのですが、実現するにはどう書けばいいのでしょうか?
- ベストアンサー
- PHP
- 正規表現について教えて下さい
正規表現について教えて下さい $string = "LibrayMyUtil2File AppFile"; $pattern = '/([A-Z][a-z0-9]*)*([A-Z][a-z0-9]*)File/'; $replacement = '$2'; echo preg_replace($pattern, $replacement, $string);//Util2 App と表示される この例のように、「File」の前の単語に置き換えたいのですが、 このやり方だとpatternの「[A-Z][a-z0-9]*」が重複しているのが凡長だと思ってまして もっと短縮された書き方があれば教えてもらいたいです。
- ベストアンサー
- PHP
- ['SERVER_NAME']と正規表現について
下記の意味が分かりません。 ( !empty($_SERVER['SERVER_NAME']) && preg_match('#^(?:[a-z0-9\-]+\.){1,}[a-z]{2,}$#i', $_SERVER['SERVER_NAME']) ) ? preg_replace('#^www\.#', '.', $_SERVER['SERVER_NAME']) : ''; <分かる範囲> $_SERVER['SERVER_NAME']が空ではなく、かつ、$_SERVER['SERVER_NAME']の中に'#^(?:[a-z0-9\-]+\.){1,}[a-z]{2,}$#i'があったら、$_SERVER['SERVER_NAME']の中の'#^www\.#'を'.'へ置き換え <知りたいこと> 正規表現の所の意味と、結局、この一文で何をしようとしている(と予想される)か、教えてください
- ベストアンサー
- PHP
- 正規表現[a-z0-9\-\.]* の意味を教えて
[a-z0-9\-\.]* の意味を教えてください。 preg_matchで確かめてみようと思ったのですが、 よく分かりませんでした。 「半角英小文字」か「数字」か「ハイフン」か「ドット」だと思ったのですが、 「半角英大文字」でも、「""」でも「空白」でも「日本語」でも、1が返ってきました。 「*」を調べたら、「直前の表現の0回以上の繰り返しにマッチ」て書いてあったのですが、 「0回以上」の意味が分かりません。 「すべてに当てはまる」ということなのでしょうか?
- ベストアンサー
- PHP
- PHPでメールチェックをしたいのですが、空欄だとエラーが返されてしまいます。
必須項目ではないので、何か入力されたときのみメールチェックをしたいのですが、 function isMailError ( $mail ) { if($mail==null) { return true; } if ( !preg_match( '/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i', $mail ) ){ return true; } else { return false; } } この設定ではうまくいきません。なぜでしょうか? ご指導よろしくお願い致します。
- 締切済み
- PHP
- preg_replaceでの正規表現について
お世話になります。 ereg_replace で書いた正規表現による置換処理を、 preg_replace に置き換えようとしています。 (preg_replaceの方が処理が速いとマニュアルにあったので) ところが、preg_replaceでの正規表現検索がうまくいかないで困っています。 基本的には、ereg_replaceの正規表現部分を//で囲んでいるだけです。 具体的には、下記のような処理を書いています。 間違いがあれば、ご指摘いただけましたら幸いです。 //### うまくいっている ereg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='\{dokuji tag\}.+\{_dokuji tag\}'; $replace=''; $html=ereg_replace($search,$replace,$html); //不要部分の削除 //### うまくいっている ereg_replace のパターン ここまで ### ↓ //### うまくいかない preg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='/\{dokuji tag\}.+\{_dokuji tag\}/m'; $replace=''; $html=preg_replace($search,$replace,$html); //不要部分の削除 //### うまくいかない preg_replace のパターン ここまで ### //### 置き換えるソース('template/temple.html') ここから ### <!-- {dokuji tag} --> <tr> <td nowrap><strong>タイトル:</strong></td> <td> <input type="text" name="name" size="80" value="{name}" /> </td> </tr> <!-- {_dokuji tag} --> //### 置き換えるソース('template/temple.html') ここまで ### よろしくお願い申し上げます。
- ベストアンサー
- PHP
補足
(?<=\\w)([A-Z]) の場合 underscore("AaaBbb")=>aaa_bbb (?=\\w)([A-Z]) の場合 underscore("AaaBbb")=>_aaa_bbb この < はどうな役割してるのはわかりません