正規表現 part2

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/08/31(木) 20:21:42
Regexは問題ありすぎ。
実はバックリファレンスの有無で文法が変わる。

http://capslockabcjp.kitunebi.com/faq.html#regex

鬼車で安定版が出てからが真打。
953デフォルトの名無しさん:2006/08/31(木) 21:12:33
>>952
「バックリファレンスの有無で文法が変わる」と問題「ありすぎ」なの?
954デフォルトの名無しさん:2006/08/31(木) 21:18:16
そう。ありすぎだろ。
(1+1)と1+1の結果が変わるようなら、言語として設計が変。
955デフォルトの名無しさん:2006/08/31(木) 23:25:02
Rubyは(1+1)と1+1の結果が違うのか。酷い言語だな。
956デフォルトの名無しさん:2006/08/31(木) 23:29:05
Rubynohanasinankasitenai
957935:2006/09/01(金) 00:48:22
>>951

えと、全部で章立てが十あって、JavaとかPHPは章がひとつ割かれているんだけど
RubyやMySQLはないっす。

索引を見てもRubyで引けるのは大して項目数がないし、
Onigurumaという項目もないから、ご希望のものは多分
載ってないんじゃないかなあ。

そもそもジェフリーが鬼車の存在を知っているのか疑問に思ったりw
958デフォルトの名無しさん:2006/09/01(金) 11:14:18
>>957
あらら、そうなんですか。残念・・・
959デフォルトの名無しさん:2006/09/03(日) 18:59:01
>>950
これ眺めてて思ったんだけど、正規表現ってどんだけ種類あるんだ?
POSIX
Emacs
grep
Java
Perl
Ruby
960デフォルトの名無しさん:2006/09/03(日) 20:09:56
>>959
挙げるだけ虚しくなるくらい無数にある。
961デフォルトの名無しさん:2006/09/03(日) 20:13:50
もうね秀丸とEclipseとsedで正規表現使うけどそれだけで嫌になる
特に参照パラメータとかね
962デフォルトの名無しさん:2006/09/04(月) 00:06:11
正規表現ってカップラーメンで言うとあれに似てるな
963デフォルトの名無しさん:2006/09/07(木) 05:03:47
Perl方式が主流になりつつあることに警告したい。
メニイコアの時代になれば探索の順序に依存する仕様が
並列化のネックになる。

POSIX化すれと言いたい。
964デフォルトの名無しさん:2006/09/08(金) 06:58:41
POSIXって言明あったっけ? あれがないと俺、生きていけない
965デフォルトの名無しさん:2006/09/08(金) 07:15:13
正規表現って方言あり過ぎ
どこが正規なの?
966デフォルトの名無しさん:2006/09/08(金) 08:24:46
方言はいろいろあっても正規文法を扱うところは同じじゃないのかな
967デフォルトの名無しさん:2006/09/09(土) 10:25:06
>>966
俺は>>965じゃないが、基本的にはそういうことだよな
ただ、現在のPerlやRubyなどの「正規表現」は拡張されまくった結果、
既に正規文法では表現できないものも表現できるようになってるが…
968デフォルトの名無しさん:2006/09/09(土) 18:28:43
次に示す四つの例で、全てのパターンにマッチするにはどうすればよいでしょうか?

1. href="..."
2. href='...'
3. href=...
4. href = ...
※4はイコール記号の前後に *いくつかの* スペース(タブも含む)があるとする

1〜2は「href=("|')」と表現することが出来ましたが、3〜4はどう表現したらよいか分かりません。
よろしくおねがいします。
969デフォルトの名無しさん:2006/09/09(土) 18:30:39
>>968
その前に、HTML的には 1. だけが正解
970デフォルトの名無しさん:2006/09/09(土) 18:46:32
XMLじゃなくて?
971デフォルトの名無しさん:2006/09/09(土) 18:48:20
href( |\t)*=("|'|)
972デフォルトの名無しさん:2006/09/09(土) 19:05:24
>>969
2.も正解。

>By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or 
>single quotation marks (ASCII decimal 39).
>Single quote marks can be included within the attribute value when the value is delimited by double quote marks, and vice versa.
>Authors may also use numeric character references to represent double quotes (") and single quotes (').
>For double quotes authors can also use the character entity reference ".
973デフォルトの名無しさん:2006/09/09(土) 19:23:16
href *= *((['"]).*?\2|\S*)

=の途中にスペースが入るのはどうかと思う…。解釈してくれるブラウザはあるの?
974デフォルトの名無しさん:2006/09/09(土) 20:05:35
普通に空白文字を無視してリンク飛ばしてくれるぞ > 手元にあったIE6とFF1.5のどちらも

ダカラHTMLなんてパースしたくねぇ (;´д⊂)
975デフォルトの名無しさん:2006/09/09(土) 20:14:12
とりあえず、まずHTML標準に対応してから拡張を考えないか
976975:2006/09/09(土) 20:15:41
ごめん、読くみたら対応してた
977デフォルトの名無しさん:2006/09/09(土) 21:33:12
>>972
スマン 出展教えて
978968:2006/09/09(土) 21:41:47
皆さん、ご回答ありがとうございました。

>>969
言われる通り、二重引用符、または単引用符で括る約束ですね。
例外もありますが、XHTMLでは全て括る約束のようです。

つまり、仕様に基づいて(X)HTMLドキュメントを作成しない著者が多いので
こちとら正規表現に苦労しているわけです。(いや、冗談、これは私が悪い……)

>>977 仕様書じゃないかな?
979デフォルトの名無しさん:2006/09/09(土) 22:05:35
980デフォルトの名無しさん:2006/09/10(日) 14:50:26
バカの1つ覚えみたいに何でも正規表現でやろうとすると行き詰まる
981デフォルトの名無しさん:2006/09/11(月) 00:14:43
なんでもかんでも正規表現でやりたい派
982デフォルトの名無しさん:2006/09/11(月) 10:36:37
正規表現でできないのは努力が足りないから。
もっと精進すれば、必ずできると信じているから。
983デフォルトの名無しさん:2006/09/11(月) 11:42:42
何かの宗教だなw
984デフォルトの名無しさん:2006/09/11(月) 15:40:43
日経BP:「正規表現が広がる現状を、規制緩和を推進してきた立場から、
どのように感じているのか?

奥谷:「正規表現論は甘えです」

日経BP:真意を確かめようと質問を重ねると、奥谷は苛立った
    ように言葉を畳みかけた。

奥谷:「競争はしんどい。だから甘えが出ている。個人の甘えが、
   このままだと社会の甘えになる」
   「今の一致はほとんどが ”ぜいたく一致” 比較したい文字列と
   パターンが違うということを客観視できていない」
985デフォルトの名無しさん:2006/09/11(月) 16:08:36
>>968
もれがよく書く正規表現
つ m/href\s*=\s*(\'|\"|)(.*?)\1[\s>]/i
986デフォルトの名無しさん:2006/09/12(火) 00:52:36
>>983
君も今日からお仲間w
987デフォルトの名無しさん:2006/09/12(火) 03:47:45
俺なんか正規表現のお陰で彼女ができたぜ
988デフォルトの名無しさん:2006/09/12(火) 03:54:38
umeage
989デフォルトの名無しさん:2006/09/12(火) 23:46:46
990デフォルトの名無しさん:2006/09/13(水) 00:24:48
s/^99[\d]+(.*)//g
991デフォルトの名無しさん:2006/09/13(水) 08:31:50
1000だったら漏れ億万長者!
992デフォルトの名無しさん:2006/09/13(水) 09:30:10
残念
993デフォルトの名無しさん:2006/09/13(水) 15:23:09
9/√9=3
994デフォルトの名無しさん:2006/09/13(水) 15:24:03
1000は君に譲ろう。
995デフォルトの名無しさん:2006/09/13(水) 15:25:09
1000を取りたい者は俺を乗り越えて行け。
996デフォルトの名無しさん:2006/09/13(水) 16:15:59
9-√9=6
997デフォルトの名無しさん:2006/09/13(水) 16:19:06
すみません質問です
正規表現でaからzまでの文字を順に出力するにはどうすればよいですか?
たとえばperlで
@atoz = /hogehoge/;
としたら
$atoz[0] = 'a';
$atoz[1] = 'b';
$atoz[2] = 'c';
みたいになって欲しいのですが。
998デフォルトの名無しさん:2006/09/13(水) 16:23:28
$_ = 'abcdefghijklmnopqrstuvwxyz';
@atoz = /(.)/g;
999デフォルトの名無しさん:2006/09/13(水) 16:24:36
> $_ = 'abcdefghijklmnopqrstuvwxyz';

ここが反則です。
1000デフォルトの名無しさん:2006/09/13(水) 16:24:42
>>998
どうしても正規表現でやるのか…。
@atoz = "a" .. "z";
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。