• ベストアンサー

正規表現で分かりません

例えば以下のようなパターンの正規表現チェックがあるのですが、 どのようなものを意味しているか分かりません。 教えていただけますでしょうか。 よろしくお願いします。 以下の情報は調べたのですが。 +(プラス)・・・直前の1文字の1回以上の繰り返しを表現 . (ピリオド)・・・改行コード以外の1文字にマッチするか否か [ ](大括弧)・・・囲みの中に書かれた任意の1文字にマッチするか否か ^([^ ]+) +[^ ]+.+S3.lzh

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

正規表現は、ツール毎に異なります。 何で使うものかをはっきりさせないと、まったく違う意味になる可能性もあります。 例えば、こんな風に http://www.kt.rim.or.jp/~kbk/regex/regex.html 調べる場合にも使う場合にも、何用の正規表現かをはっきりさせましょう。 以下、よくある実装として。 > +(プラス)・・・直前の1文字の1回以上の繰り返しを表現 「1文字」ではなく、直前の(ひとまとまりの)パターンが1回以上 です。 たとえば [^ ]+ では [^ ] [^ ][^ ] [^ ][^ ][^ ] (以下略) のように [^ ] を1つ以上繰り返したパターンのどれかに一致する、という意味です。 > [ ](大括弧)・・・囲みの中に書かれた任意の1文字にマッチするか否か もう一つ、 [^ ]などと、^が最初に付くと、 []で指定した文字以外、という意味になります。 その他、先のURLなどを参考にすれば ^ 先頭から ([^ ]+) 空白で無い文字が1つ以上。()でくくってあるので、後から参照する等の使い方ができる + その後に空白が1つ以上 [^ ]+ その後に空白で無い文字が1つ以上 .+ その後に任意の文字が1つ以上 S3 そのまま「S3」 . 任意の一文字( そのまま . に一致させたいと予想される) lzh そのまま「lzh」 となります。 おそらく、 空白を含むlzhファイルから、その最初の空白までの単語を抜き出したいのかな、と予想されます。 ただ、 S3Xlzh とか S3.lzhXA とかもマッチします。

関連するQ&A

  • 正規表現  マッチさせれない C#

    下記のもの全体にマッチさせる表現を考えていたのですが、 どぉしても思いつきません。 まだまだ正規表現についてわかっていないのでご教授いただけないでしょうか。 /// <summary> /// メソッド1 /// </summary> /// <param name="Out">1:入力文字,2:出力文字)</param> /// 文字列     の部分は行が増えたり減ったりするので /// と文字列と改行文字で1つのくくりにして それを任意の回数繰り返しでマッチさせようとしています。 ([/// .*] \r\n)*   (///[.<>/]* \r\n)*  など試しましたがマッチしません。 そもそもこのようなものをマッチさせること自体無理なのかもしれませんが その点も含めご教授お願いいただけますでしょうか。言語はC#です

  • 正規表現の 「 * 」

    正規表現の 「 * 」は、直前パターンの繰り返しですよね? つまり、a* は a, aa, aaa, aaaa, aaaaa, ..... にマッチするわけですよね? ところで、 echo abbbaaa | sed 's/a*/x/g' のようにしたら a, aaa の部分が x に置き換わって  → xbbbx となることを期待していたのですが、  → xbxbxbx となってしまいました。 なぜでしょうか?

  • 正規表現

    いつもお世話になっております。 早速質問させていただきます。 文字列中に {{○}} を検索し、マッチさせるための 正規表現を教えてください。 (中括弧×2 英数字 中括弧×2) ○には、英数字が入る可能性がございます。 {{○}} は複数個あるかもしれないので、preg_match_all() を 使用したほうがいいかと考えております。 よろしくご教示お願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。

  • 正規表現の初心者です

    正規表現初心者です。 なぜ、 [0-9]+ という正規表現が下記の112にあたらないのでしょうか? 0-9(数字)の一文字以上の繰り返しなので、複数桁の数字にマッチすると思ったのですが・・。 echo 112|grep -e "[0-9]+" > (マッチせず)

  • 正規表現

    例えば下のような文字列があって、{~} を正規表現で最初の一つをマッチさせたいのですが、{~} が複数あると最初の一つだけを取り出すことができません。 あああああ{aaaaa}いいいいい{bbbbb}ううううう パターンは /{.*}/ こんな感じでやっているのですが結果は、 {aaaaa}いいいいい{bbbbb} となってしまいます。 正規表現に詳しい方教えてください。

  • 正規表現について

    お世話になります。 ●●● ●●● という文字列かどうか判断する正規表現を作成したいです。 条件としては、 ・「文字1 (←全角スペース)文字2」という感じで、文字1と文字2に全角スペースが挟まれている感じで、文字列の先頭にも末尾にも空白文字は入ってはいけない(真ん中に1つのみ) ・文字1と文字2には、数字・空白以外の文字が入る(主に感じ・ひらがな・カタカナが入る)(文字数は一文字以上) といったところです。 自分で作成した正規表現は、 $pattern = '/^([\d\S])+ ([\d\S])+$/'; if( !preg_match($pattern,$chkStr) ) print "マッチしていない"; } なんですが、どうもマッチしてほしい文字にマッチしていないようなのです。 お手数ですがご教授ください。

    • ベストアンサー
    • PHP
  • 正規表現

    Java 5.1 java.util.regex.Pattern java.util.regex.Matcher を用いてHTMLのTABLEを抽出したいのですが、ヒットしません。正規表現のパターンはどうしたらいいのでしょう? パターン: < *table.*?>[\s.]*?< */table *?> 検索対象: … <table border=1 width=200> <tr><th>AA</th><th>BB</th></tr> <tr><td>CC</td><td>DD</td></tr> <tr><td>EE</td><td>FF</td></tr> </table> … で、TABLEタグを含むTABLE全体を期待したのですが全くヒットしませんでした。 ちなみに * <table …>と</table>単体ではヒットします。 * ソースから改行文字を取り除いて一行テキストとした場合にはヒットします。 これらのことから、改行文字がマッチしていないことが原因かと思うのですが、パターンの正規表現についてご教授願います。

    • ベストアンサー
    • Java
  • 正規表現について VB6

    VB6で正規表現(Microsoft VBScript Regular Expression 5.5を使っているのですが、 (1) No001の場合、001を取得 (2) Noの場合は空文字を取得 したいのですが、どうすればよいのでしょうか? re.Pattern = "^No(.+)$" この場合、(1)の場合、マッチしますが(2)でマッチしません。 正規表現に詳しい方、VB6で正規表現をよく使う方、教えて下さい。

  • 正規表現でつまずいています

    お世話になっております。 VB2005を使っていますが、正規表現でつまずいています。 日付を表すデータとして、以下のような2つのパターンがあります。 Date: 02-apr-2010   ← : と 02の間に半角スペースがあります。 Date:13-Jan-2010 00:12:14 それぞれから年月日のデータのみを取り出すために正規表現を組んでみましたがうまくいきません。 "Date:\s*(?<date>.*)$|\s.*" $|\s.*  で意図したところは、文字列の最後 or スペースが1個と任意の文字が続く、というものです。 正しい表記方法をご指示いただければ幸いです。 よろしくお願いいたします。