• ベストアンサー

正規表現 なにを表現しているのか

メタキャラクタを中心に、 ↓は何を表現しているのか教えてください(-_-;) 1)</?(HTML|HEAD|BODY|FONT)> 2)\[RFC[0-9]{4}\] 初心者なので、まったくわかりません;; よろしくお願いします;;

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

  • ベストアンサー
回答No.2

正規表現で12時間式時刻を表現するにはどうしたらいいか? を考えてみましょうか。 まず、12時間式時刻の形式を考えてみましょう。  10:53 am  →時(1~12) + ":" + 分(00~59) + " " + amまたはpm amまたはpmは、グループ化を使って下のように表現できる。 →(am|pm) 分(00~59)は、キャラクタクラス使って下のように表現できる。 →[0-5][0-9] 時(1~12)を考える場合には、1~9(1桁)の場合と10~12(2桁)の2つをグループ化を用いて →(1[0-2]|[1-9]) よって、12時間式時刻を正規表現で表現するには →(1[012]|[1-9]):[0-5][0-9] (am|pm) となる。 もし、1時~9時の場合でも2桁目に0をつける形式なら →(1[012]|0[1-9]):[0-5][0-9] (am|pm) ちなみに、質問者さんの書かれた →(1[012]|[1-9] ):[0-5][0-9] (am|pm) は[1-9]の後のスペースが余計です。 正規表現メモ http://www.kt.rim.or.jp/~kbk/regex/regex.html

t-love-m
質問者

お礼

ありがとうございます★ 本当に助かりました(*´∇`*)

t-love-m
質問者

補足

あと、最後に質問させてください。 テキスト文の中から、メールアドレスのみを抽出する 正規表現を考える時、次の条件を考慮しながら「^」で始まり、 「$」で終わる正規表現を教えてください;; 【条件】 ・「@」が存在する ・「@」の前になんらかの文字(ユーザ名)が書かれている ・「@」の後ろになんらかの文字(ドメイン名)が書かれている ・「@」の後ろの文字列に少なくとも1つの「.」が含まれている ・「@」の後ろの文字列が「.」で終わらない あと、メールアドレスを用いてどのようにマッチして いるか解説して頂きたいのですが・・・。 アドレスは~。。。↓ 「g******m@***-u.ac.jp」で・・・。 (架空のアドレスです) 沢山聞いてしまって、申し訳ないのですが これで最後なので、よろしくお願いします;;

その他の回答 (1)

回答No.1

1)</?(HTML|HEAD|BODY|FONT)> →<HTML>もしくは<HEAD>もしくは<BODY>もしくは<FONT>もしくは</HTML>もしくは</HEAD>もしくは</BODY>もしくは</FONT>にマッチング 2)\[RFC[0-9]{4}\] →[RFC@@@@]にマッチング(@@@@は0000~9999までの4桁の数字)。 ・“?”はその直前の文字と1セットで解釈し、直前の文字が0~1個であることを示す。 ・()で囲まれてるのはグループ化といい“|”で区切った文字列の中からひとつにマッチする。 ・[]で囲まれてるのはキャラクタクラスといい[]内の文字一文字にマッチング、  [0-9]や[a-z]の場合は、それぞれ0~9、a~zを示す。 ・{n}はその直前の文字と1セットで解釈し、直前の文字がn個であることを示す。 ・\[と\]は\がついているため正規表現の特殊文字ではなく通常文字として解釈する。

t-love-m
質問者

お礼

とても早い返答、ありがとうございます★ 助かりました(*´∇`*) そこで、また質問なのですがいいでしょうか。 正規表現で12時間式時刻を表現するのに (1[012]|[1-9] ):[0-5][0-9] (am|pm) で表現するのは分かったのですが 正当性のある根拠の説明をして頂きたいのですが わかりますか?;;

t-love-m
質問者

補足

すいません;; 条件を数個、書き忘れてました。 ココに書いておきます・・・。 ・ドメイン名の最後は「.」で終わらない ・「.」で区切られたノード名の繰り返し回数に明確な制限はない ・それぞれのノード名の最初の文字は英字 ・それぞれのノード名の最後の文字は最後の文字は英字または数字 ・それぞれのノード名の最初と最後の文字意外は英数、数字、「-」のいずれかの文字 沢山あってすいません;; よろしくお願いします(-_-;)

関連するQ&A