正規表現

■ このスレッドは過去ログ倉庫に格納されています
NGNG
正規表現
7061
垢版 |
NGNG
>>67
> >>61の発言を(それまでの流れと併せて)読むと、さも載ってそうなんですが、
> 目次見たら(-_-)ぁゃιぃ…だったので。

漏れの発言を勝手な解釈すんなよ。
正しい「定義」なんて載ってるわけないだろ。正しい「定義」なんてないんだから。
7161
垢版 |
NGNG
>>67
ていうかあれだ、「定義」の話じゃなくて「規格」の話をしたいのか?

「定義」の話なら、>>69 の言うように、
計算機科学(の世界だと「正則表現」の方が通りが良いか?)の本でも
紐解いて読んでみるのが良いと思う。

そうでなくて、単に、
文字列バターンマッチに使われる「正規表現」の正しい「規格」の話、
ってことなら、そんなものは無い。
強いて言えば、>>68 くらい。
NGNG
>>67
「定義」=「決め」でしょ。
その場その場で都合のいいように「定義」するわけだから
「正しい『定義』」なんてのはあるわけがない。
NGNG
>>67
じゃ、まずは「正しい」の定義から始めようか。
7461
垢版 |
NGNG
というわけで、このスレは、「ホップクロフト&ウルマンを輪読するスレ」になりますた。
7562
垢版 |
NGNG
規格として[a-z]の解釈について正しい定義はあるのか?
っていう議論中に、「コレ読め」と言われたら載ってるように
見えても仕方ないと思うんですがねぇ。

>>6に載ってないから無い」、とは言えんでしょ。
何の為に読めと言ったのか聞いてよろしい?>>61
NGNG
POSIX 1003.2 に厳密に従っていればこれにある通り。
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/regex.7.html

が、世にある実装は大抵そうでない。
NGNG
>>76
見た感じ、EBDICでもロケールが英語なら[a-z]は
英小文字のセットとして評価されるべきみたいですな。
NGNG
>>75
全く違う。
そもそも君の話は正しい定義がこの世に存在する事を
前提としている。しかし実際はそのようなものは
ないわけだ。(「正しい」の意味が私の考えている
ものと違うならわからないが)
そのことを理解するために(というか議論のための
基礎知識を得るために)読んでおくべきと 61 は
言いたかったのだと勝手に解釈してみる。

厳密な定義という意味で正しいと言っているなら
計算機科学の教科書をひもといてみるといいかもなあ。
NGNG
>75
そんなマヌケな話を避けられるようになるよ、
とそういう意味で勧めてくだすったんだろう。
8075
垢版 |
NGNG
>>78
>そもそも君の話は正しい定義がこの世に存在する事を前提としている。
シテネーヨ。

つーか著名ツールの実装に関する本を読んだ所で、
[a-z]の解釈は〜という議論に決着つくのですか。

1-60までのスレの流れと、>>61の勧めた>>6の内容を
良く見てから出直して下さい。>>78,79
NGNG
取り合えず読んでみる、と言う選択肢は
意図的に無視されているのだろうか…
NGNG
もともと [a-z] なんていう表記は、素な正規表現/正則言語にはない。
でもそれじゃ面倒だから - で繋いだ2つの文字の間の文字群を略記する方法が、
及び実装としては単に文字コードを繋ぐ方法がデファクトスタンダードになった。
それを勘違いしたバカが [a-z] は論理的なアルファベットを意味すべきだとか言い始めて
[[:alpha:]] や \l やら \a が導入されるようになったり、変な挙動をする実装もでてきたかもしれん。
でここでPOSIXなんて有名無実なものが定義されたわけだ。
なのにさらにバカが [a-z] の正しい解釈、定義を教えろとかいう。

やれやれだ。
NGNG
ここは62=75の脳内正規表現を研究するスレになりますた。

# 素直に勉強してから出直せばいいのに。。。
8462=75
垢版 |
NGNG
>>82
やれやれとはこっちが言いたい。
[a-z]の解釈が文字コード依存なのは承知済みだっつーの。

>>61のタイミングで論議を不毛と評しつつ、正規表現の本読めと
言われたら、規格か何かが載ってるとしか思えんでしょうが。
著名ツールの実装見たところで、議論の不毛を悟れますか?
NGNG
少なくとも読めば実装により異なることは察することができたかもね
NGNG
規格自体を読みたいなら68にリンクがあるし、なんでそう粘着してるんだろうか
NGNG
なぜに著名ツールの実装しか載っていないと決めつけ
勝手な解釈で話を進めるのだろう?
とにかくおかしな前提と曲解が多い上に粘着だ。
NGNG
もう放置しようよ……。
NGNG
非放置国家 2ch
NGNG
>>87
決め付けてませんが。
>>62で実装以外の内容(具体的に規格など)は
載って無いかと聞いてるんだし。

おかしな前提・曲解・粘着は認めますがね。
で、偉そうに読めとか言った>>61は何処逝ったの?
NGNG
>>90
> で、偉そうに読めとか言った>>61は何処逝ったの?
読んだら出てくるんじゃねーの?
9290
垢版 |
NGNG
とっくの昔に読んでいるんだが…
(立ち読みでざっとだけど)
NGNG
形式言語系の本は読んだのかYO!
NGNG
>>92
そんなの読んだうちに入らん。
NGNG
理屈が通用すると勘違いせず、粘着は放置しましょう
NGNG
腹が減ってるもんで
こんなのでも食いついてしまうんです。
NGNG
>>90
君が何を知りたいのか、
おじさんわかんなくなっちゃったよ。
ここらでひとまず
疑問点を整理して箇条書きにしてみないか?
NGNG
技術系の本を立ち読みしただけで読んだ気になれる人には
何を言っても無駄ではなかろうか。
99山崎渉
垢版 |
NGNG
(^^)
100あぼーん
垢版 |
NGNG
あぼーん
NGNG
『詳説 正規表現 第2版』
ISBN4-87311-130-7
本体価格5,400円

が5月に
102あぼーん
垢版 |
NGNG
あぼーん
NGNG
>>101
おっ。
ソースどこ?
NGNG
定義うんぬんよりも、便利な方がいい。

というわけで、

(?# (?: (?= (?! (?<= (?<! (?> (?()
NGNG
>>103
オライリーのメルマガ
106名無しさん@お腹いっぱい。
垢版 |
NGNG
正規表現(regular expression)の名前の由来はなに?
regularをなぜ正規と略したんだろう?
「正式にきめられていること。正式の規定」という意味の正規では
幾分意味不明なんじゃないだろうか?
むしろregular verb(規則動詞)の意味のregularと捉えるべきで、
「規則表現(法or式)」とでもした方が文字列の規則性を規則的に表現するもの
という意味でより素直で的確なんじゃないだろうか。
ここにはnormal distributionを正規分布と略し日本語としては
意味不明にしてしまったのと同様のセンスの無さが感じられる。
NGNG
「function」を「関数」と訳すアフォといっしょだろ。
108名無しさん@お腹いっぱい。
垢版 |
NGNG
regular に合うような日本語単語を考えると
正規、正則、規則、規律、規則的、整然、合式、本格的、定常、完全、定例
などが挙げられる。
正規に違和感を感じるのは同意。
ただし、規則だと regular より rule の方を感じる。

regular expression を長々と訳すならばオレテキには
規則正しい表現法
となるが、あとはそれをどのように短くするかだ。
正規表現には違和感あるが
規則表現にはさらに違和感ある。
規則正しい生活を規則生活と省略するのに似ている。
109あぼーん
垢版 |
NGNG
あぼーん
NGNG
わたしは特に違和感ない。

複数の体系の共通項的要素を抽出して、どれをもあつかえる
単一の体系にまとめることをCS的に正規化というでは?
NGNG
正則表現といわれたほうがシックリするわ。
NGNG
>>107
「函数」が正解、という主張ならそれは翻訳の問題ではなく
日本の戦後国語教育の問題なわけだが
113107
垢版 |
NGNG
>>112
> 「函数」が正解、という主張なら
違う。
NGNG
>>113
それならそれで108なみ詳細な解説きぼんぬ
115113
垢版 |
NGNG
>>114
> それならそれで108なみ詳細な解説きぼんぬ
どきっ!!
い、いやぁ、「function」は普通に訳したら「機能」じゃないかなぁ〜、
なんて思うので。
なんで、「関数」になったのか疑問なので。
やっぱり、かっこいいからかなぁ。
NGNG
数学方面なら「正則」とするところなのに、情報数学方面では「正規」の方が
定着しているということなのか?

>>115
数学で既に訳語があったからという単純な話なんでは。函数→関数の
書き換えはまた別の話だが。古い先生だと「関数」の表記を絶対使わない人
もいるね。自分も函数の方がいいと思う
NGNG
中国語が英語から「function」という英単語を輸入するとき
それを「函数」と翻訳した。
函は中国語で「ファン」と発音し「function」の「ファン」に似ているところからきている。
そのあと日本は中国から「函数」という言葉を漢字で記述された文字として輸入した。
そして「函」を「カン」と発音した。
戦後の日本の教育において「函」が教育仕様内の標準的漢字から外れるという理由から
およそ同義で同音の「関」に置き換えられた。

すなわち「function」の「fun」を元にしてその部分は
以下の経緯で「関」に変わった。
英語の「fun」
↓発音の類似性から
中国語の「函」(ファン)
↓同じ文字
日本語の「函」(カン)
↓発音の類似性から
日本語の「関」(カン)

こういう改変に次ぐ改変で「関数」という言葉が生まれた。
もはや「関数」という言葉にはそう表現する適切な理由がない。
情報系の技術屋なら「function」ないし「ファンクション」
と表現すれば良いのだ。どうしても漢字で書きたければ「機能」で良し。
「関数」だなんていい加減な言葉を使うなら
「class」を「学級」とでも表現してくれた方がまだましと言えよう。
NGNG
函(はこ)の数と意味も掛けてあるから、やはり捨て難い訳ではある
NGNG
>>118
classは「級」でいいはずだけど、「きゅう」ではみじかすぎて
わからんからそのまま「くらす」。
NGNG
くらす、きさん!!
NGNG
もう「関数」で慣れちゃってるからなぁ。
「機能」と訳したところで
意味がわかりやすくなるわけでもないし。

「正規表現」にしても「関数」にしても
おれにとってはある概念に対するラベルでしかない。
NGNG
「関数」は一つの名詞なので、
一旦覚えてしまえば
「関数」という訳について不自然さは感じにくい。

でも「正規表現」は「正規」と「表現」の複合語であるから、
正規な表現? という意味不明さはいつまでも残る。
NGNG
"regular expression" というからには
regular じゃない expression もあるんでしょうか?
たとえばどんなのですか?
NGNG
>>123
fgrepに書く検索パターン
NGNG
>>115
プログラミング用語での function は単なる「機能」ではなく、
数学的な(値を返す) function としてのニュアンスが込められているんじゃ
ないのかなあ?

関数型言語ではいうに及ばず、FORTRAN とかでもそんな感じだし、
C だってもともと void 型なんてないし。

# 正規表現と関係ないので sage
NGNG
「機能」も造語っぽくない?
明治あたりの。
NGNG
関数が函数の書き換えだと知ったとき、小学校の算数の時間で関数の
説明に「ブラックボックス」という言葉を使っていたのを思い出した。
この書き換えは最悪だと思ったな。

しかし、いくら原語が同じだとしても、関数と機能は日本語としては完全に
別物になってしまっている。function key の function は、やはり「機能」の
意味でないと落ち着かない。

>>122
「正則」は、ほとんど術語としてでしか使われることがないけど、「正規」は
普通の文章でも使われるからね。「正規」と「表現」の結び付きが強くなって
しまう。
NGNG
expression にしても、「式」とも訳される場合もあって悩ましいことこの上なし
NGNG
じつは日本語って、語彙が豊富?
まぁ、ほとんど訳語だけど。。。
NGNG
>>127
> function key の function は、やはり「機能」の意味でないと落ち着かない。

それは「function key」を「関数キー」と読んでる人に言ってくれ。いるのか?

Google で検索しても 163 件しかない上に、関数電卓の「関数キー」
(sin 関数のキーとか) だの「ハッシュ関数のキー」だのばっかりなのだが。
NGNG
「ファンクションキー」と言ってるのしか聞いたことがないが、この「ファンクション」
は「機能」の意味でないと落ち着かないと言ってるだけだ
NGNG
>>129
自国語で数学的概念を表現できる国は少ないほうだと思われ。
微分、積分、階乗、無理数、有理数、etc...
functionに対する訳で機能と函数で揉めるのは贅沢なことなんじゃないのかなぁ……
ていうか、算数、数学の教科書が日本語だけで完結できること自体、
ほかの国から見ると不思議なことなんじゃないの?
NGNG
何の話をしてるんだか・・・
NGNG
では、日本における性器表現についてどうぞ
NGNG
[まち]んこ
NGNG
\(藁田\|ワ[ロラ]タ\)
NGNG
>>135 >>136
こういう日本語の正規表現の使える実装にはどんなのがありますか?

Ruby, 鬼車, jperl, xyzzy, Emacs, あたりは使えると思うけど、ほかには?
NGNG
Vim
NGNG
perlとかなら
/(ma|chi)nko/i
みたいに i オプションつけることで
大文字小文字を同一視してくれる機能が一般的に普及してますね。
grepとか大抵の性器表現できるツールにはあるみたい。

そこでほしいのが平仮名片仮名同一視。
/[まち][んむ]こ/i
とすれば「マむコ」にも「チンこ」にもマッチしてほしいわけ。
そういう機能がついた性器表現ってどういうツールにございますか?
あと
/ベートーヴェン/i
で検索したら
「ベートーベン」や「べえとおべん」にもマッチしてくれる
ようなのもあるものでしょうか?
NGNG
>>139
後者は正規表現の範疇ではないような。
前者はあってもよさそうだね。
NGNG
文字クラスの拡張でしょうか
NGNG
>>141
日本語用文字クラスってわけね。
しかしそんな日本でしか使えないもんはツールで対応すべきだな。

>>139
>/ベートーヴェン/i
>で検索したら
>「ベートーベン」や「べえとおべん」にもマッチしてくれる

こんなん正規でも正則でもない非正規表現だ。
>>139は正規表現使うのやめた方が幸せになれそうだよ。
NGNG
>>139 Migemoの辞書をカスタマイズすればできるようになるよ
NGNG
>>143
そういう問題じゃなかろう・・・
NGNG
日本語正規表現の使える実装は Ruby, 鬼車, jperl, xyzzy, Emacs, Vim で全てですね?
NGNG
>>145
いいえ。
NGNG
文字クラスとか自分で設定できる正規表現みたいなのが
あればいいんじゃないの。
どうせ perl だって場あたり的に好きなように拡張してるんだから。
148名無しさん@悩み中
垢版 |
NGNG
sed ですが、
[[:xdigit:]]\{2\} にマッチする文字列のなかで、
\(61\|75\|6f\) にマッチしないようなものを指定したいとき
どないすればよろしい?
149148
垢版 |
NGNG
やっぱり、先に \(61\|75\|6f\) にマッチする奴を退避しておいてから、
[[:xdigit:]]\{2\} にマッチするやつを指定するしかないんかな…
NGNG
誰か、正規表現だけで会話するスレ作ってくれ。
NGNG
/いったい何を会話するというのだ/
NGNG
>>150
それこそ言いだしっぺの法則だろ。正規表現だけで会話したい >>150 が立てれ。
NGNG
駄スレ立てんな。
NGNG
>>153

$mes153 =~ s/。//;
reverse(split(//, $mes153));
わかた?
結果は、「なんてつたレスだ」


155名無しさん@お腹いっぱい。
垢版 |
NGNG
>>154
こうなりますた。
$ perl -e 'quotemeta($var='駄スレ立てんな。'); print reverse(split(//,$var));'
B∧んてぉ洛スμ・
NGNG
>>150

名スレの予感
NGNG
>>155

jperlじゃないとだめですね。perl用もかきますた。

($var='駄スレ立てんな。') =~ s/立(.+)。/たつ$1/;
while ($var) {
if ($var =~ s/^[\xA1-\xFE][\xA1-\xFE]// or $var =~ s/^.//) {
push(@str, $&);
$var = $';
}
}
print reverse(@str), "\n";
158名無しさん@お腹いっぱい。
垢版 |
NGNG
>>156
2chですから、性器表現とこれを用いた強制痴漢ならあちこちに。
NGNG
\hなのはいけないと思います!
NGNG
\SM(?:性器拡張(?!器具))
NGNG
>>157
何やってんだろな、漏れ。
($var='駄スレ立てんな。') =~ s/立(.+)。/たつ$1/;
while ($var =~ s/^[\xA1-\xFE][\xA1-\xFE]// or $var =~ s/^.//) {
 push(@str, $&);
}
print reverse(@str), "\n";
で十分だった。この全角文字対応の正規表現は、euc-jpの奴ね。
でもさ、やっぱ正規表現で会話するってむずいよ。>>150よ。

NGNG
print while s//>>161普通過ぎてつまらん/;
NGNG
>>161
それは正規表現ではなく perl script というのではないだろうか。
NGNG
>>163の的確すぎるツッコミに藁。
NGNG
>>1-164
これら全てが正規表現であることは自明なのであります。
NGNG
Perl正規表現の質問です。

Ascii文字コードは、アルファベット大文字→ちょこっと記号類→アルファベッ
ト小文字の順に並んでるですが、以下のようになるのはなぜですか。なぜ、ア
ルファベット大文字しか出てこない?

$ perl -e 'for(A .. z) {print $_, ", ";}'
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
167名無しさん@お腹いっぱい。
垢版 |
NGNG
>>166

駱駝本(第二版)の p.103 の脚注 *32 に、

> もし指定された最終値が、マジックによる増加によっては生成できない
> ような値なら、最終値のケタ数を超えない範囲で値を生成する。

と書いてあるけど、違う?
NGNG
>>167ありがとん。
>マジックによる増加によっては生成できない

というのが分からなかったので、駱駝本(第3版)引いたら、「マジックイン
クリメント:普通の数値と同じようにして、英数字からなる文字列の値に「1
を加える」方法を知っているインクリメント演算子のこと。」だって。Aは、
16進数で41、Zは、5A。5B以下60までは、[、\, ], ^, _, `で、61から小文字。
一つずつインクリメントされて並んでいるが、できないところを見ると、「英
数字からなる文字列」だけをサポートしている演算子なんだね。

第2版の103ページにあたる121ページあたりにも、A .. Zやa .. zの例はある
けど、A .. zはない。
NGNG
文字のインクリメントもちゃんと桁上げされるんよ。

#perl > result.txt
$a = "a";
print ++$a, "\n" while (length $a < 3);
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況