- ベストアンサー
正規表現にマッチする数
正規表現でマッチした部分を取り出したいとき、()で くくっておくと$1, $2,...として参照できますよね。 そのとき、予めいくつマッチするか分からない場合 マッチした数を知るということは可能でしょうか?
- hime-ichigo
- お礼率67% (19/28)
- Perl
- 回答数2
- ありがとう数4
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$1,$2で参照できるのは 「/(\w)(\w)/g」などかっこが複数ある場合です おそらくご質問の内容は「/(\w)*/g」といった 同じ個所に複数回HITする場合の事だと思うのですが、 その場合一旦マッチした部分を配列にいれて 配列のサイズを見ればわかりやすいかと思います。 例)数字の数をカウントします $Sourse = "1-2-3-4-5"; @Match = $Source =~ /(\w+)/g; print @Match;
その他の回答 (1)
- iichiho
- ベストアンサー率37% (416/1114)
マッチした数をいれておく変数を作っておいて、マッチするたびにカウントアップすればいいです。 $CNT=0; #カウント数を入れる変数 if(マッチの条件){ $CNT++; }
お礼
すみません質問の仕方が悪かったようです… ちょっと話が違ったのですが、でも回答ありがとうございました。
関連するQ&A
- [15]にマッチする正規表現
[15]にマッチする正規表現 [15] にマッチする正規表現を書きたいのですが、うまくいきません。。。。 簡単だ、と思ったのですが。。。 expr "$DATA1" : .*\[15\].* と書くと、中の数字が15じゃなくてもマッチしてしまいます。 expr "$DATA1" : .*15.* であれば"15"にマッチしますが、対象の文字列の都合上、カッコでも識別する必要があり 困っております。[と]をエスケープする目的で\をつける、と思っているのですが、何か 思い違いをしているのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- 「マッチしない」正規表現の書き方
正規表現について、おたずねします。 文字列 abc,def,ghi のいずれかにマッチする正規表現は (abc|def|ghi) ですよね。 それでは、「abc,def,ghi のいずれにもマッチしない」正規表現は、どう書けばいいのでしょうか? あちこち調べましたが、どうしてもわかりません。 ただし、if $a =~ /(abc|def|ghi)/ などで、=~ を !~ に直す、というのはナシです。あくまでも右辺の式の中で表現したいのですが…
- 締切済み
- Perl
- 正規表現のマッチについて
正規表現について質問させていただきます。 以下のデータがあるとします。 山田太郎(やまだたろう)(ヤマダタロウ) 一個目の『(』の前にタブを挿入したいのですが、一個目の『(』にのみマッチさせる正規表現の書き方を教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
- マッチする部分を除いたものが欲しいのですが(正規表現)
マッチする部分を除いたものが欲しいのですが。 $a = '/home/user/'; $b = '/home/user/aaaa' $c = [正規表現や置換演算子]で、-----あ $cが aaaaとなってほしい。「あ」の部分の書き方をご存知のかた教えていただけますか?
- ベストアンサー
- Perl
- 正規表現/スペース以降改行までのグローバルマッチ
JavaScript正規表現で、「スペース1つ」以降「改行」までのグローバルマッチを行いたいのですが、うまくいきません。 ■マッチさせたい内容 ・年末なのに ここをマッチさせたい ・正規表現が ここもマッチさせたい ・ ここもマッチさせたい ・ここはマッチさせたくない ・ここはマッチさせたくない ■うまくいかない正規表現 /\s{1}.*[\n\r]/g
- 締切済み
- JavaScript
- 正規表現の達人にお聞きしたい。
正規表現で、文字数は4文字ですが、そのうち1つでもaがあれば マッチするということで、1~3まではマッチし、 4はa無しなのでマッチせず、5は4文字でないのでマッチしない ような正規表現は書くことは可能でしょうか? 1) aaaa 2) ajjj 3) kaoa 4) jjjj 5) axxxx
- 締切済み
- Perl
- 正規表現
正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。
- ベストアンサー
- JavaScript
- 正規表現 マッチさせれない C#
下記のもの全体にマッチさせる表現を考えていたのですが、 どぉしても思いつきません。 まだまだ正規表現についてわかっていないのでご教授いただけないでしょうか。 /// <summary> /// メソッド1 /// </summary> /// <param name="Out">1:入力文字,2:出力文字)</param> /// 文字列 の部分は行が増えたり減ったりするので /// と文字列と改行文字で1つのくくりにして それを任意の回数繰り返しでマッチさせようとしています。 ([/// .*] \r\n)* (///[.<>/]* \r\n)* など試しましたがマッチしません。 そもそもこのようなものをマッチさせること自体無理なのかもしれませんが その点も含めご教授お願いいただけますでしょうか。言語はC#です
- 締切済み
- その他(プログラミング・開発)
お礼
なるほど、ありがとうございます! そうか、 @X = $Y =~ // みたいな書き方が可能なんですね。 知りませんでした…