- ベストアンサー
正規表現で文字クラスの引き算
pick52の回答
- pick52
- ベストアンサー率35% (166/466)
0~2と6なら [0-26] と書きます。 > Perl が機能の豊富さで他の言語に負けるのはめずらしいケースなので、 そもそも、Perlは正規表現を実装している言語の中では古い方です。 現在、正規表現に対応している言語の大半はPerlの正規表現を参考に 作られています。 (そのため、Perlの正規表現互換の記述である場合が多いです) 一方で、古いために新しい要求などがでてきても仕様が古いために 対応されていません。 新しい言語ではその辺を独自に改良している場合があります。 しかし、お書きになっているような書き方よりPerlのような書き方の 方がずっと簡単でシンプルだと思いますが...。
関連するQ&A
- VB2005で、正規表現を使いたい
VB2005で、正規表現を使いたいのですが、Basp21など使わずに.NET標準で備わっているPerl互換のようなものはありますか? VBで正規表現に詳しいサイトや書籍などありましたらご教授ください。
- ベストアンサー
- Visual Basic
- 秀丸の正規表現はどの流派に属しているのですか?
秀丸エディタ64 (バージョン8.20)を使用しています。 秀丸の正規表現は、どういった流派(?)の流れを汲んでいるのでしょうか?よく、○○互換の正規表現という言葉がありますよね。Perl互換、.NET互換など、、、Java、C、そのほかの言語/プラットフォームで秀丸の正規表現に最も近いのは何でしょうか、教えてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- 正規表現のサンプル豊富なサイト
正規表現の素人です。 サンプル豊富なサイトで勉強させていただきたいのですが、適当なサイトをご紹介いただけないでしょうか。 #perlはわかりません。 #aspのコンポネントでperl互換の正規表現を利用するための勉強。 #aspも初心者レベル。
- ベストアンサー
- Perl
- 正規表現eregとpreg
pregがperl互換の正規表現というのは分かったのですが、eregとpregは使い分ける用途などがあるのででしょうか? あるhtmlから<a herf="--">タグを抜く作業に苦労していまして、調べるとどちらも使われているようで、正規表現を勉強するのにも戸惑っています。 せひ宜しくお願いします。
- ベストアンサー
- PHP
- PHPで正規表現を使った対象データを全て取り出した
PHPで正規表現を使った対象データを全て取り出したいのですが、 echo ($matches); にしても「Array」しかでないし、、 var_dump($matches); で確認しても意図するものが取れておりません。。 正規表現で取りだしたい箇所は hrefの「100065」と「100066」です。 これはテスト用に作っているので2個ですが、本来は 30個程度対象箇所があります。 何か正規表現の記述が間違っていると思いますが、ご指摘願います。。 ・プログラム preg_match_all( "(/abcNo=(.*?)&ckFlg/)", $_getHTML, $matches); var_dump($matches); ・var_dumpしたブラウザの表示内容 array(2) { [0]=> array(0) { } [1]=> array(0) { } } 補足: $_getHTML は既にダミーで用意したHTMLを読み込んだものです。 $_getHTML で読み込んでいるファイルの中身です。 <html> <body> <a href="abcNo=100065&ckFlg=1"></a> <a href="abcNo=100066&ckFlg=1"></a> </body> </html>
- ベストアンサー
- PHP
- 正規表現について2
すみません、前回「正規表現について」でお世話になりました者です。 前回の分は解決したのですが、それに関連してもう少し教えてください。 data.txt---------------------------------------- aaabbbccc aaadddccc aaaeeeccc ------------------------------------------------ test.pl----------------------------------------- #!C:\Perl\bin\perl use CGI; my $q = CGI->new; $q->charset('Shift_JIS'); print $q->header(-type => "text/html"); my $line=0; open(IN,"<data.txt"); open(OUT,">output.txt"); while(<IN>){ if ($line++==0){ $output1="$1" if/aaa(.*?)ccc/;} s/aaa(.*)ccc/$1/ if (?aaa(.*)ccc?); print OUT; } close(OUT); close(IN); print $output1; ------------------------------------------------ とすることで、得られたい結果である、 output.txt-------------------------------------- bbb aaadddccc aaaeeeccc ------------------------------------------------ IEでの表示-------------------------------------- bbb ------------------------------------------------ となりました。そこで今回教えていただきたいのは、 data.txt---------------------------------------- <空行> aaabbbccc aaadddccc aaaeeeccc ------------------------------------------------ というようにdata.txtのはじめが空行の場合にも、 上記と同じような結果を得たいです。output.txtの はじめは空行になっても構いません。得られる文字として、上と同じ結果がほしいです。どうしたらよいでしょうか?よろしくお願いします。
- ベストアンサー
- Perl
お礼
ありがとうございます。 たぶん見方が違うんだと思うんですが、Perl の正規表現はだらしないほど拡張しまくっているように思えます。 たとえば (?<=PATTERN) のような文字を消費しないパターンとか、パターンを再帰させてカッコの対応にマッチさせるようなのは、昔なかったような? 気がします。 とまれ、確かに、上の書き方はシンプルではありませんね。 状況を説明すると、.NET と Perl で同じ処理を書いていて、.NET で書いた人がくれたパターンが Perl で動かなかったという感じです。 マーその作業の体制が???という話はあるんですが・・・(^^;