正規表現
■ このスレッドは過去ログ倉庫に格納されています
1正規表現
NGNG 正規表現
NGNG
取り合えず読んでみる、と言う選択肢は
意図的に無視されているのだろうか…
意図的に無視されているのだろうか…
NGNG
もともと [a-z] なんていう表記は、素な正規表現/正則言語にはない。
でもそれじゃ面倒だから - で繋いだ2つの文字の間の文字群を略記する方法が、
及び実装としては単に文字コードを繋ぐ方法がデファクトスタンダードになった。
それを勘違いしたバカが [a-z] は論理的なアルファベットを意味すべきだとか言い始めて
[[:alpha:]] や \l やら \a が導入されるようになったり、変な挙動をする実装もでてきたかもしれん。
でここでPOSIXなんて有名無実なものが定義されたわけだ。
なのにさらにバカが [a-z] の正しい解釈、定義を教えろとかいう。
やれやれだ。
でもそれじゃ面倒だから - で繋いだ2つの文字の間の文字群を略記する方法が、
及び実装としては単に文字コードを繋ぐ方法がデファクトスタンダードになった。
それを勘違いしたバカが [a-z] は論理的なアルファベットを意味すべきだとか言い始めて
[[:alpha:]] や \l やら \a が導入されるようになったり、変な挙動をする実装もでてきたかもしれん。
でここでPOSIXなんて有名無実なものが定義されたわけだ。
なのにさらにバカが [a-z] の正しい解釈、定義を教えろとかいう。
やれやれだ。
NGNG
ここは62=75の脳内正規表現を研究するスレになりますた。
# 素直に勉強してから出直せばいいのに。。。
# 素直に勉強してから出直せばいいのに。。。
8462=75
NGNGNGNG
少なくとも読めば実装により異なることは察することができたかもね
NGNG
規格自体を読みたいなら68にリンクがあるし、なんでそう粘着してるんだろうか
NGNG
なぜに著名ツールの実装しか載っていないと決めつけ
勝手な解釈で話を進めるのだろう?
とにかくおかしな前提と曲解が多い上に粘着だ。
勝手な解釈で話を進めるのだろう?
とにかくおかしな前提と曲解が多い上に粘着だ。
NGNG
もう放置しようよ……。
NGNG
非放置国家 2ch
NGNG
NGNG
9290
NGNG とっくの昔に読んでいるんだが…
(立ち読みでざっとだけど)
(立ち読みでざっとだけど)
NGNG
形式言語系の本は読んだのかYO!
NGNG
>>92
そんなの読んだうちに入らん。
そんなの読んだうちに入らん。
NGNG
理屈が通用すると勘違いせず、粘着は放置しましょう
NGNG
腹が減ってるもんで
こんなのでも食いついてしまうんです。
こんなのでも食いついてしまうんです。
NGNG
NGNG
技術系の本を立ち読みしただけで読んだ気になれる人には
何を言っても無駄ではなかろうか。
何を言っても無駄ではなかろうか。
99山崎渉
NGNG (^^)
100あぼーん
NGNGあぼーん
NGNG
『詳説 正規表現 第2版』
ISBN4-87311-130-7
本体価格5,400円
が5月に
ISBN4-87311-130-7
本体価格5,400円
が5月に
102あぼーん
NGNGあぼーん
NGNG
NGNG
定義うんぬんよりも、便利な方がいい。
というわけで、
(?# (?: (?= (?! (?<= (?<! (?> (?()
というわけで、
(?# (?: (?= (?! (?<= (?<! (?> (?()
NGNG
>>103
オライリーのメルマガ
オライリーのメルマガ
106名無しさん@お腹いっぱい。
NGNG 正規表現(regular expression)の名前の由来はなに?
regularをなぜ正規と略したんだろう?
「正式にきめられていること。正式の規定」という意味の正規では
幾分意味不明なんじゃないだろうか?
むしろregular verb(規則動詞)の意味のregularと捉えるべきで、
「規則表現(法or式)」とでもした方が文字列の規則性を規則的に表現するもの
という意味でより素直で的確なんじゃないだろうか。
ここにはnormal distributionを正規分布と略し日本語としては
意味不明にしてしまったのと同様のセンスの無さが感じられる。
regularをなぜ正規と略したんだろう?
「正式にきめられていること。正式の規定」という意味の正規では
幾分意味不明なんじゃないだろうか?
むしろregular verb(規則動詞)の意味のregularと捉えるべきで、
「規則表現(法or式)」とでもした方が文字列の規則性を規則的に表現するもの
という意味でより素直で的確なんじゃないだろうか。
ここにはnormal distributionを正規分布と略し日本語としては
意味不明にしてしまったのと同様のセンスの無さが感じられる。
NGNG
「function」を「関数」と訳すアフォといっしょだろ。
108名無しさん@お腹いっぱい。
NGNG regular に合うような日本語単語を考えると
正規、正則、規則、規律、規則的、整然、合式、本格的、定常、完全、定例
などが挙げられる。
正規に違和感を感じるのは同意。
ただし、規則だと regular より rule の方を感じる。
regular expression を長々と訳すならばオレテキには
規則正しい表現法
となるが、あとはそれをどのように短くするかだ。
正規表現には違和感あるが
規則表現にはさらに違和感ある。
規則正しい生活を規則生活と省略するのに似ている。
正規、正則、規則、規律、規則的、整然、合式、本格的、定常、完全、定例
などが挙げられる。
正規に違和感を感じるのは同意。
ただし、規則だと regular より rule の方を感じる。
regular expression を長々と訳すならばオレテキには
規則正しい表現法
となるが、あとはそれをどのように短くするかだ。
正規表現には違和感あるが
規則表現にはさらに違和感ある。
規則正しい生活を規則生活と省略するのに似ている。
109あぼーん
NGNGあぼーん
NGNG
わたしは特に違和感ない。
複数の体系の共通項的要素を抽出して、どれをもあつかえる
単一の体系にまとめることをCS的に正規化というでは?
複数の体系の共通項的要素を抽出して、どれをもあつかえる
単一の体系にまとめることをCS的に正規化というでは?
NGNG
正則表現といわれたほうがシックリするわ。
NGNG
NGNG
>>113
それならそれで108なみ詳細な解説きぼんぬ
それならそれで108なみ詳細な解説きぼんぬ
115113
NGNG >>114
> それならそれで108なみ詳細な解説きぼんぬ
どきっ!!
い、いやぁ、「function」は普通に訳したら「機能」じゃないかなぁ〜、
なんて思うので。
なんで、「関数」になったのか疑問なので。
やっぱり、かっこいいからかなぁ。
> それならそれで108なみ詳細な解説きぼんぬ
どきっ!!
い、いやぁ、「function」は普通に訳したら「機能」じゃないかなぁ〜、
なんて思うので。
なんで、「関数」になったのか疑問なので。
やっぱり、かっこいいからかなぁ。
NGNG
数学方面なら「正則」とするところなのに、情報数学方面では「正規」の方が
定着しているということなのか?
>>115
数学で既に訳語があったからという単純な話なんでは。函数→関数の
書き換えはまた別の話だが。古い先生だと「関数」の表記を絶対使わない人
もいるね。自分も函数の方がいいと思う
定着しているということなのか?
>>115
数学で既に訳語があったからという単純な話なんでは。函数→関数の
書き換えはまた別の話だが。古い先生だと「関数」の表記を絶対使わない人
もいるね。自分も函数の方がいいと思う
NGNG
中国語が英語から「function」という英単語を輸入するとき
それを「函数」と翻訳した。
函は中国語で「ファン」と発音し「function」の「ファン」に似ているところからきている。
そのあと日本は中国から「函数」という言葉を漢字で記述された文字として輸入した。
そして「函」を「カン」と発音した。
戦後の日本の教育において「函」が教育仕様内の標準的漢字から外れるという理由から
およそ同義で同音の「関」に置き換えられた。
すなわち「function」の「fun」を元にしてその部分は
以下の経緯で「関」に変わった。
英語の「fun」
↓発音の類似性から
中国語の「函」(ファン)
↓同じ文字
日本語の「函」(カン)
↓発音の類似性から
日本語の「関」(カン)
こういう改変に次ぐ改変で「関数」という言葉が生まれた。
もはや「関数」という言葉にはそう表現する適切な理由がない。
情報系の技術屋なら「function」ないし「ファンクション」
と表現すれば良いのだ。どうしても漢字で書きたければ「機能」で良し。
「関数」だなんていい加減な言葉を使うなら
「class」を「学級」とでも表現してくれた方がまだましと言えよう。
それを「函数」と翻訳した。
函は中国語で「ファン」と発音し「function」の「ファン」に似ているところからきている。
そのあと日本は中国から「函数」という言葉を漢字で記述された文字として輸入した。
そして「函」を「カン」と発音した。
戦後の日本の教育において「函」が教育仕様内の標準的漢字から外れるという理由から
およそ同義で同音の「関」に置き換えられた。
すなわち「function」の「fun」を元にしてその部分は
以下の経緯で「関」に変わった。
英語の「fun」
↓発音の類似性から
中国語の「函」(ファン)
↓同じ文字
日本語の「函」(カン)
↓発音の類似性から
日本語の「関」(カン)
こういう改変に次ぐ改変で「関数」という言葉が生まれた。
もはや「関数」という言葉にはそう表現する適切な理由がない。
情報系の技術屋なら「function」ないし「ファンクション」
と表現すれば良いのだ。どうしても漢字で書きたければ「機能」で良し。
「関数」だなんていい加減な言葉を使うなら
「class」を「学級」とでも表現してくれた方がまだましと言えよう。
NGNG
函(はこ)の数と意味も掛けてあるから、やはり捨て難い訳ではある
NGNG
NGNG
くらす、きさん!!
NGNG
もう「関数」で慣れちゃってるからなぁ。
「機能」と訳したところで
意味がわかりやすくなるわけでもないし。
「正規表現」にしても「関数」にしても
おれにとってはある概念に対するラベルでしかない。
「機能」と訳したところで
意味がわかりやすくなるわけでもないし。
「正規表現」にしても「関数」にしても
おれにとってはある概念に対するラベルでしかない。
NGNG
「関数」は一つの名詞なので、
一旦覚えてしまえば
「関数」という訳について不自然さは感じにくい。
でも「正規表現」は「正規」と「表現」の複合語であるから、
正規な表現? という意味不明さはいつまでも残る。
一旦覚えてしまえば
「関数」という訳について不自然さは感じにくい。
でも「正規表現」は「正規」と「表現」の複合語であるから、
正規な表現? という意味不明さはいつまでも残る。
NGNG
"regular expression" というからには
regular じゃない expression もあるんでしょうか?
たとえばどんなのですか?
regular じゃない expression もあるんでしょうか?
たとえばどんなのですか?
NGNG
>>123
fgrepに書く検索パターン
fgrepに書く検索パターン
NGNG
>>115
プログラミング用語での function は単なる「機能」ではなく、
数学的な(値を返す) function としてのニュアンスが込められているんじゃ
ないのかなあ?
関数型言語ではいうに及ばず、FORTRAN とかでもそんな感じだし、
C だってもともと void 型なんてないし。
# 正規表現と関係ないので sage
プログラミング用語での function は単なる「機能」ではなく、
数学的な(値を返す) function としてのニュアンスが込められているんじゃ
ないのかなあ?
関数型言語ではいうに及ばず、FORTRAN とかでもそんな感じだし、
C だってもともと void 型なんてないし。
# 正規表現と関係ないので sage
NGNG
「機能」も造語っぽくない?
明治あたりの。
明治あたりの。
NGNG
関数が函数の書き換えだと知ったとき、小学校の算数の時間で関数の
説明に「ブラックボックス」という言葉を使っていたのを思い出した。
この書き換えは最悪だと思ったな。
しかし、いくら原語が同じだとしても、関数と機能は日本語としては完全に
別物になってしまっている。function key の function は、やはり「機能」の
意味でないと落ち着かない。
>>122
「正則」は、ほとんど術語としてでしか使われることがないけど、「正規」は
普通の文章でも使われるからね。「正規」と「表現」の結び付きが強くなって
しまう。
説明に「ブラックボックス」という言葉を使っていたのを思い出した。
この書き換えは最悪だと思ったな。
しかし、いくら原語が同じだとしても、関数と機能は日本語としては完全に
別物になってしまっている。function key の function は、やはり「機能」の
意味でないと落ち着かない。
>>122
「正則」は、ほとんど術語としてでしか使われることがないけど、「正規」は
普通の文章でも使われるからね。「正規」と「表現」の結び付きが強くなって
しまう。
NGNG
expression にしても、「式」とも訳される場合もあって悩ましいことこの上なし
NGNG
じつは日本語って、語彙が豊富?
まぁ、ほとんど訳語だけど。。。
まぁ、ほとんど訳語だけど。。。
NGNG
>>127
> function key の function は、やはり「機能」の意味でないと落ち着かない。
それは「function key」を「関数キー」と読んでる人に言ってくれ。いるのか?
Google で検索しても 163 件しかない上に、関数電卓の「関数キー」
(sin 関数のキーとか) だの「ハッシュ関数のキー」だのばっかりなのだが。
> function key の function は、やはり「機能」の意味でないと落ち着かない。
それは「function key」を「関数キー」と読んでる人に言ってくれ。いるのか?
Google で検索しても 163 件しかない上に、関数電卓の「関数キー」
(sin 関数のキーとか) だの「ハッシュ関数のキー」だのばっかりなのだが。
NGNG
「ファンクションキー」と言ってるのしか聞いたことがないが、この「ファンクション」
は「機能」の意味でないと落ち着かないと言ってるだけだ
は「機能」の意味でないと落ち着かないと言ってるだけだ
NGNG
>>129
自国語で数学的概念を表現できる国は少ないほうだと思われ。
微分、積分、階乗、無理数、有理数、etc...
functionに対する訳で機能と函数で揉めるのは贅沢なことなんじゃないのかなぁ……
ていうか、算数、数学の教科書が日本語だけで完結できること自体、
ほかの国から見ると不思議なことなんじゃないの?
自国語で数学的概念を表現できる国は少ないほうだと思われ。
微分、積分、階乗、無理数、有理数、etc...
functionに対する訳で機能と函数で揉めるのは贅沢なことなんじゃないのかなぁ……
ていうか、算数、数学の教科書が日本語だけで完結できること自体、
ほかの国から見ると不思議なことなんじゃないの?
NGNG
何の話をしてるんだか・・・
NGNG
では、日本における性器表現についてどうぞ
↓
↓
NGNG
[まち]んこ
NGNG
\(藁田\|ワ[ロラ]タ\)
NGNG
NGNG
Vim
NGNG
perlとかなら
/(ma|chi)nko/i
みたいに i オプションつけることで
大文字小文字を同一視してくれる機能が一般的に普及してますね。
grepとか大抵の性器表現できるツールにはあるみたい。
そこでほしいのが平仮名片仮名同一視。
/[まち][んむ]こ/i
とすれば「マむコ」にも「チンこ」にもマッチしてほしいわけ。
そういう機能がついた性器表現ってどういうツールにございますか?
あと
/ベートーヴェン/i
で検索したら
「ベートーベン」や「べえとおべん」にもマッチしてくれる
ようなのもあるものでしょうか?
/(ma|chi)nko/i
みたいに i オプションつけることで
大文字小文字を同一視してくれる機能が一般的に普及してますね。
grepとか大抵の性器表現できるツールにはあるみたい。
そこでほしいのが平仮名片仮名同一視。
/[まち][んむ]こ/i
とすれば「マむコ」にも「チンこ」にもマッチしてほしいわけ。
そういう機能がついた性器表現ってどういうツールにございますか?
あと
/ベートーヴェン/i
で検索したら
「ベートーベン」や「べえとおべん」にもマッチしてくれる
ようなのもあるものでしょうか?
NGNG
NGNG
文字クラスの拡張でしょうか
NGNG
NGNG
>>139 Migemoの辞書をカスタマイズすればできるようになるよ
NGNG
>>143
そういう問題じゃなかろう・・・
そういう問題じゃなかろう・・・
NGNG
日本語正規表現の使える実装は Ruby, 鬼車, jperl, xyzzy, Emacs, Vim で全てですね?
NGNG
>>145
いいえ。
いいえ。
NGNG
文字クラスとか自分で設定できる正規表現みたいなのが
あればいいんじゃないの。
どうせ perl だって場あたり的に好きなように拡張してるんだから。
あればいいんじゃないの。
どうせ perl だって場あたり的に好きなように拡張してるんだから。
148名無しさん@悩み中
NGNG sed ですが、
[[:xdigit:]]\{2\} にマッチする文字列のなかで、
\(61\|75\|6f\) にマッチしないようなものを指定したいとき
どないすればよろしい?
[[:xdigit:]]\{2\} にマッチする文字列のなかで、
\(61\|75\|6f\) にマッチしないようなものを指定したいとき
どないすればよろしい?
149148
NGNG やっぱり、先に \(61\|75\|6f\) にマッチする奴を退避しておいてから、
[[:xdigit:]]\{2\} にマッチするやつを指定するしかないんかな…
[[:xdigit:]]\{2\} にマッチするやつを指定するしかないんかな…
NGNG
誰か、正規表現だけで会話するスレ作ってくれ。
NGNG
/いったい何を会話するというのだ/
NGNG
NGNG
駄スレ立てんな。
154名無しさん@Meadow
NGNG155名無しさん@お腹いっぱい。
NGNGNGNG
157名無しさん@Meadow
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";
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ですから、性器表現とこれを用いた強制痴漢ならあちこちに。
2chですから、性器表現とこれを用いた強制痴漢ならあちこちに。
NGNG
\hなのはいけないと思います!
NGNG
\SM(?:性器拡張(?!器具))
161名無しさん@Meadow
NGNGNGNG
print while s//>>161普通過ぎてつまらん/;
NGNG
>>161
それは正規表現ではなく perl script というのではないだろうか。
それは正規表現ではなく 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,
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 に、
> もし指定された最終値が、マジックによる増加によっては生成できない
> ような値なら、最終値のケタ数を超えない範囲で値を生成する。
と書いてあるけど、違う?
駱駝本(第二版)の p.103 の脚注 *32 に、
> もし指定された最終値が、マジックによる増加によっては生成できない
> ような値なら、最終値のケタ数を超えない範囲で値を生成する。
と書いてあるけど、違う?
168名無しさん@Meadow
NGNG >>167ありがとん。
>マジックによる増加によっては生成できない
というのが分からなかったので、駱駝本(第3版)引いたら、「マジックイン
クリメント:普通の数値と同じようにして、英数字からなる文字列の値に「1
を加える」方法を知っているインクリメント演算子のこと。」だって。Aは、
16進数で41、Zは、5A。5B以下60までは、[、\, ], ^, _, `で、61から小文字。
一つずつインクリメントされて並んでいるが、できないところを見ると、「英
数字からなる文字列」だけをサポートしている演算子なんだね。
第2版の103ページにあたる121ページあたりにも、A .. Zやa .. zの例はある
けど、A .. zはない。
>マジックによる増加によっては生成できない
というのが分からなかったので、駱駝本(第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);
#perl > result.txt
$a = "a";
print ++$a, "\n" while (length $a < 3);
170169
NGNG あ、これじゃ for (A..Z) の説明にはならないな。
NGNG
>>166
全然正規表現じゃなかった・・・。
全然正規表現じゃなかった・・・。
NGNG
/\x82\xad\x82\xbb\x82\xc1/
sjis
sjis
NGNG
>>172
パターンマッチさせる意味は?
パターンマッチさせる意味は?
NGNG
NGNG
ちがった、171にバカにされて・・・
~~~
~~~
NGNG
おまえらみんな(ち|い|う)んぽ。
177名無しさん@お腹いっぱい。
NGNG 『詳説 正規表現』を読んでいるようなエキスパートの人に質問です。
「"a" が偶数個、"b" が奇数個含まれる、すべての文字列を表す正規表現」
って分かりますか?
自分は答えを見てもよく分かりませんでした。
「"a" が偶数個、"b" が奇数個含まれる、すべての文字列を表す正規表現」
って分かりますか?
自分は答えを見てもよく分かりませんでした。
NGNG
まずどのような「状態」があるのかを考える。この場合は
1. aが偶数個、bが偶数個
2. aが偶数個、bが奇数個
3. aが奇数個、bが奇数個
4. aが奇数個、bが偶数個
で初期状態が1でゴールが2となる。
まず最初に1から2に行くには /b/ の1通り。aが来ると4に行く。
4からスタートして1もしくは3を経由し2へ行く最短パターンは /(aa|bb)*(ab|ba)/
以上から /b|a(aa|bb)*(ab|ba)/ が状態2に行き着く最短パターン。←第1段階
次に状態2からスタートして考えると /aa/ で3を経由して2へ戻り、
/bb/ で1を経由して2へ戻り、/ab|ba/ では4へ行ってしまう。
4へ行ってしまった後は先に考えた「2へ行く最短パターン」で帰って来れるので、
2から始まって2に戻るパターンは /aa|bb|(ab|ba)(aa|bb)*(ab|ba)/ となる。
これは0回以上起こり得ることを考慮して第1段階と結合すると
/(b|a(aa|bb)*(ab|ba))(aa|bb|(ab|ba)(aa|bb)*(ab|ba))*/
1. aが偶数個、bが偶数個
2. aが偶数個、bが奇数個
3. aが奇数個、bが奇数個
4. aが奇数個、bが偶数個
で初期状態が1でゴールが2となる。
まず最初に1から2に行くには /b/ の1通り。aが来ると4に行く。
4からスタートして1もしくは3を経由し2へ行く最短パターンは /(aa|bb)*(ab|ba)/
以上から /b|a(aa|bb)*(ab|ba)/ が状態2に行き着く最短パターン。←第1段階
次に状態2からスタートして考えると /aa/ で3を経由して2へ戻り、
/bb/ で1を経由して2へ戻り、/ab|ba/ では4へ行ってしまう。
4へ行ってしまった後は先に考えた「2へ行く最短パターン」で帰って来れるので、
2から始まって2に戻るパターンは /aa|bb|(ab|ba)(aa|bb)*(ab|ba)/ となる。
これは0回以上起こり得ることを考慮して第1段階と結合すると
/(b|a(aa|bb)*(ab|ba))(aa|bb|(ab|ba)(aa|bb)*(ab|ba))*/
NGNG
>>177
余裕があれば一度オートマトンに関する本を読んでみて。
http://www.amazon.co.jp/exec/obidos/ASIN/4320029488/ref=sr_aps_b_1/249-5563000-9397957
の前半はすごくわかりやすいよ。
そこまでしなくても、一度 >>178 たんのいってることを
http://katsu.watanabe.name/grep/p7.html
みたいな状態遷移図にしてみるといいかも。
余裕があれば一度オートマトンに関する本を読んでみて。
http://www.amazon.co.jp/exec/obidos/ASIN/4320029488/ref=sr_aps_b_1/249-5563000-9397957
の前半はすごくわかりやすいよ。
そこまでしなくても、一度 >>178 たんのいってることを
http://katsu.watanabe.name/grep/p7.html
みたいな状態遷移図にしてみるといいかも。
180177
NGNG 自分がこの問題を見たのは古い UNIX MAGAZINE で、内容を簡単に引用しますと …
偶数か奇数かを調べるには文字の数を2で割った余りが0か1かという
決まった2つを調べればよいため、正規文法で記述することが可能。
なお、この文法では a に関して2つ、b に関しても2つの場合があるので、
2 x 2 = 4 つの記号(状態)を用いる。
A → aB B → aA C → aD D → a
A → bC B → bD C → bA D → aC
A → b D → bB
状態 A … a が偶数個で b が奇数個の文字列
状態 B … a が奇数個で b が奇数個の文字列
状態 C … a が偶数個で b が偶数個の文字列
状態 D … a が奇数個で b が偶数個の文字列
以上により答えは
((a|b(aa)*ab)(b(aa)*b)*(a|ba(aa)*b)|b(aa)*b)*((a|b(aa)*ab)(b(aa)*b)*ba|b)(aa)*
となる。
正規表現でうまく表現できない問題に当たったときは、いったん正規文法で記述してから
正規表現に変換すると解決できる場合も多い。
偶数か奇数かを調べるには文字の数を2で割った余りが0か1かという
決まった2つを調べればよいため、正規文法で記述することが可能。
なお、この文法では a に関して2つ、b に関しても2つの場合があるので、
2 x 2 = 4 つの記号(状態)を用いる。
A → aB B → aA C → aD D → a
A → bC B → bD C → bA D → aC
A → b D → bB
状態 A … a が偶数個で b が奇数個の文字列
状態 B … a が奇数個で b が奇数個の文字列
状態 C … a が偶数個で b が偶数個の文字列
状態 D … a が奇数個で b が偶数個の文字列
以上により答えは
((a|b(aa)*ab)(b(aa)*b)*(a|ba(aa)*b)|b(aa)*b)*((a|b(aa)*ab)(b(aa)*b)*ba|b)(aa)*
となる。
正規表現でうまく表現できない問題に当たったときは、いったん正規文法で記述してから
正規表現に変換すると解決できる場合も多い。
181長いので分割。
NGNG■ このスレッドは過去ログ倉庫に格納されています
ニュース
- たぬかな、結婚していた SNSで報告 生配信では入籍時期も説明 祝福殺到「おめでとう!」「幸あれ」 [muffin★]
- 自民 国会議員の歳費 月額5万円引き上げ 今国会での成立目指す [どどん★]
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認★2 [七波羅探題★]
- 東京・足立区の盗難車死亡ひき逃げ事件 11人死傷のうち死亡した男女の身元を発表 80代の男性と20代フィリピン国籍の女性 警視庁 [どどん★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」★3 [muffin★]
- 「営業妨害ですよ」小野田紀美氏、銀色ドレス揶揄に怒りをあらわ [バイト歴50年★]
- ド、ド、ド リ フ の
- 【動画】慶應准教授の有野氏、高市答弁の問題点を理路整然と指摘しまいネトウヨ発狂wwwwwwwwwwww [271912485]
- お前らっていい匂いするよな
- なんか寝れないのでウマ娘の雑談とか募集
- 機械に疎いのほんと大変
- お前ら彼女/妻のうんちを素手で触れる?
