プロが教えるわが家の防犯対策術!

以下のページを参考に住所を分割しています。

http://kuroutoshikou.blog16.jp/index.php/2008/12 …

上記のページの{1}の意味がよく分からないので教えてください。

---以下、ソース抜粋---
$addr = $_GET['addr'];
$addr_conv = mb_convert_kana($addr, 'a');
//正規表現で切り分け
mb_ereg("(東京都|[一-龠]+[府道県]){1}(石狩市|伊達市|八戸市|盛岡市|奥州市|南相馬市|香取市|上越市|宇陀市|姫路市|[一-龠ぁ-ヶ]+[市区郡]){1}([一-龠ぁ-ヶー]+[0-9\-‐F番地号条線西東丁目の]+){1}\s*([\sa-zA-z0-9一-龠ぁ-ヶー、・\-\(\)\.\/\']*)", $addr_conv, $match);
//郡の場合の町村分割
if (($_GET['town_split']) && mb_ereg("郡$", $match[2])) {
mb_ereg("([一-龠ぁ-ヶー]+[町村]){1}([一-龠ぁ-ヶー]*[0-9\-‐F番地号条線西東丁目の]+)", $match[3], $town);
$match[3] = $town[2];
}
//政令指定都市の区分割
if (($_GET['city_split']) && mb_ereg("区$", $match[2], $city) && $match[1] != "東京都") {
mb_ereg("([一-龠ぁ-ヶ]+市){1}([一-龠ぁ-ヶ]+区){1}", $match[2], $city);
$match[2] = $city[1];
}
---以上、ソース抜粋---

試してみたところ、{1}がなくても動作するようですが、{1}にはどういう意味があるのでしょうか?

A 回答 (3件)

http://www.kt.rim.or.jp/~kbk/regex/regex.html#PHP
の {n} でnとして1を指定したものです。
http://www.kt.rim.or.jp/~kbk/regex/regex.html#IN …

「『直前の表現』の丁度1回の繰り返し」なので、{1}を書かないのと同じ意味になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
お陰様でよく分かりました。

ところで、{1}を書かないのと同じ意味になるのに、なぜ質問文記載のソース作成者はわざわざ{1}を書いたんですかね。

お礼日時:2013/01/27 17:08

なぜそうしているかは、書いた本人に聞かないとわかりません。

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/02/18 17:03

正規表現のことを少しでも自分で勉強すればすぐにわかります。


逆に、勉強するつもりが無いのであれば、知る必要は無いでしょう。他人が書いたものをそのまま使えばいいだけ。

勉強するつもりがあれば、「正規表現」で検索するとネット上にたくさん情報があります。
    • good
    • 0
この回答へのお礼

ありがとうございます。

正規表現のことを勉強するつもりはあり、少し自分で勉強したのですが、{1}を書かないのと同じ意味になるのに、なぜ質問文記載のソース作成者はわざわざ{1}を書いたのかについては、まだ分かっておりません。
分かりが悪くお恥ずかしいです。

なお、{1}の意味については分かりました。

お礼日時:2013/01/27 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!