- 1 名前:正規表現 mailto:正規表現 [02/12/06 18:09.net]
- 正規表現
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 10:24.net]
- もともと [a-z] なんていう表記は、素な正規表現/正則言語にはない。
でもそれじゃ面倒だから - で繋いだ2つの文字の間の文字群を略記する方法が、 及び実装としては単に文字コードを繋ぐ方法がデファクトスタンダードになった。 それを勘違いしたバカが [a-z] は論理的なアルファベットを意味すべきだとか言い始めて [[:alpha:]] や \l やら \a が導入されるようになったり、変な挙動をする実装もでてきたかもしれん。 でここでPOSIXなんて有名無実なものが定義されたわけだ。 なのにさらにバカが [a-z] の正しい解釈、定義を教えろとかいう。 やれやれだ。
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 13:23.net]
- ここは62=75の脳内正規表現を研究するスレになりますた。
# 素直に勉強してから出直せばいいのに。。。
- 85 名前:62=75 mailto:sage [03/03/15 22:06.net]
- >>82
やれやれとはこっちが言いたい。 [a-z]の解釈が文字コード依存なのは承知済みだっつーの。 >>61のタイミングで論議を不毛と評しつつ、正規表現の本読めと 言われたら、規格か何かが載ってるとしか思えんでしょうが。 著名ツールの実装見たところで、議論の不毛を悟れますか?
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 22:43.net]
- 少なくとも読めば実装により異なることは察することができたかもね
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 22:46.net]
- 規格自体を読みたいなら68にリンクがあるし、なんでそう粘着してるんだろうか
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 22:51.net]
- なぜに著名ツールの実装しか載っていないと決めつけ
勝手な解釈で話を進めるのだろう? とにかくおかしな前提と曲解が多い上に粘着だ。
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/15 23:53.net]
- もう放置しようよ……。
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/16 00:39.net]
- 非放置国家 2ch
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/17 23:40.net]
- >>87
決め付けてませんが。 >>62で実装以外の内容(具体的に規格など)は 載って無いかと聞いてるんだし。 おかしな前提・曲解・粘着は認めますがね。 で、偉そうに読めとか言った>>61は何処逝ったの?
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 01:11.net]
- >>90
> で、偉そうに読めとか言った>>61は何処逝ったの? 読んだら出てくるんじゃねーの?
- 93 名前:90 mailto:sage [03/03/18 01:29.net]
- とっくの昔に読んでいるんだが…
(立ち読みでざっとだけど)
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 01:39.net]
- 形式言語系の本は読んだのかYO!
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 01:58.net]
- >>92
そんなの読んだうちに入らん。
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 02:02.net]
- 理屈が通用すると勘違いせず、粘着は放置しましょう
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 02:15.net]
- 腹が減ってるもんで
こんなのでも食いついてしまうんです。
- 98 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 02:36.net]
- >>90
君が何を知りたいのか、 おじさんわかんなくなっちゃったよ。 ここらでひとまず 疑問点を整理して箇条書きにしてみないか?
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/18 22:00.net]
- 技術系の本を立ち読みしただけで読んだ気になれる人には
何を言っても無駄ではなかろうか。
- 100 名前:山崎渉 mailto:(^^) [03/04/17 12:30.net]
- (^^)
- 101 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 102 名前:名無しさん@お腹いっぱい。 mailto:age [03/04/22 15:32.net]
- 『詳説 正規表現 第2版』
ISBN4-87311-130-7 本体価格5,400円 が5月に
- 103 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/22 23:53.net]
- >>101
おっ。 ソースどこ?
- 105 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/23 00:54.net]
- 定義うんぬんよりも、便利な方がいい。
というわけで、 (?# (?: (?= (?! (?<= (?<! (?> (?()
- 106 名前:名無しさん@お腹いっぱい。 mailto:age [03/04/23 16:36.net]
- >>103
オライリーのメルマガ
- 107 名前:名無しさん@お腹いっぱい。 [03/04/24 11:01.net]
- 正規表現(regular expression)の名前の由来はなに?
regularをなぜ正規と略したんだろう? 「正式にきめられていること。正式の規定」という意味の正規では 幾分意味不明なんじゃないだろうか? むしろregular verb(規則動詞)の意味のregularと捉えるべきで、 「規則表現(法or式)」とでもした方が文字列の規則性を規則的に表現するもの という意味でより素直で的確なんじゃないだろうか。 ここにはnormal distributionを正規分布と略し日本語としては 意味不明にしてしまったのと同様のセンスの無さが感じられる。
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 11:51.net]
- 「function」を「関数」と訳すアフォといっしょだろ。
- 109 名前:名無しさん@お腹いっぱい。 [03/04/24 11:54.net]
- regular に合うような日本語単語を考えると
正規、正則、規則、規律、規則的、整然、合式、本格的、定常、完全、定例 などが挙げられる。 正規に違和感を感じるのは同意。 ただし、規則だと regular より rule の方を感じる。 regular expression を長々と訳すならばオレテキには 規則正しい表現法 となるが、あとはそれをどのように短くするかだ。 正規表現には違和感あるが 規則表現にはさらに違和感ある。 規則正しい生活を規則生活と省略するのに似ている。
- 110 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 111 名前:名無しさん@お腹いっぱい。 mailto:age [03/04/24 13:46.net]
- わたしは特に違和感ない。
複数の体系の共通項的要素を抽出して、どれをもあつかえる 単一の体系にまとめることをCS的に正規化というでは?
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 13:57.net]
- 正則表現といわれたほうがシックリするわ。
- 113 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 14:15.net]
- >>107
「函数」が正解、という主張ならそれは翻訳の問題ではなく 日本の戦後国語教育の問題なわけだが
- 114 名前:107 mailto:sage [03/04/24 14:55.net]
- >>112
> 「函数」が正解、という主張なら 違う。
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 15:38.net]
- >>113
それならそれで108なみ詳細な解説きぼんぬ
- 116 名前:113 mailto:sage [03/04/24 17:11.net]
- >>114
> それならそれで108なみ詳細な解説きぼんぬ どきっ!! い、いやぁ、「function」は普通に訳したら「機能」じゃないかなぁ〜、 なんて思うので。 なんで、「関数」になったのか疑問なので。 やっぱり、かっこいいからかなぁ。
- 117 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 18:10.net]
- 数学方面なら「正則」とするところなのに、情報数学方面では「正規」の方が
定着しているということなのか? >>115 数学で既に訳語があったからという単純な話なんでは。函数→関数の 書き換えはまた別の話だが。古い先生だと「関数」の表記を絶対使わない人 もいるね。自分も函数の方がいいと思う
- 118 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 18:38.net]
- 中国語が英語から「function」という英単語を輸入するとき
それを「函数」と翻訳した。 函は中国語で「ファン」と発音し「function」の「ファン」に似ているところからきている。 そのあと日本は中国から「函数」という言葉を漢字で記述された文字として輸入した。 そして「函」を「カン」と発音した。 戦後の日本の教育において「函」が教育仕様内の標準的漢字から外れるという理由から およそ同義で同音の「関」に置き換えられた。 すなわち「function」の「fun」を元にしてその部分は 以下の経緯で「関」に変わった。 英語の「fun」 ↓発音の類似性から 中国語の「函」(ファン) ↓同じ文字 日本語の「函」(カン) ↓発音の類似性から 日本語の「関」(カン) こういう改変に次ぐ改変で「関数」という言葉が生まれた。 もはや「関数」という言葉にはそう表現する適切な理由がない。 情報系の技術屋なら「function」ないし「ファンクション」 と表現すれば良いのだ。どうしても漢字で書きたければ「機能」で良し。 「関数」だなんていい加減な言葉を使うなら 「class」を「学級」とでも表現してくれた方がまだましと言えよう。
- 119 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 19:37.net]
- 函(はこ)の数と意味も掛けてあるから、やはり捨て難い訳ではある
- 120 名前:名無しさん@お腹いっぱい。 mailto:age [03/04/24 21:06.net]
- >>118
classは「級」でいいはずだけど、「きゅう」ではみじかすぎて わからんからそのまま「くらす」。
- 121 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 23:01.net]
- くらす、きさん!!
- 122 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/24 23:41.net]
- もう「関数」で慣れちゃってるからなぁ。
「機能」と訳したところで 意味がわかりやすくなるわけでもないし。 「正規表現」にしても「関数」にしても おれにとってはある概念に対するラベルでしかない。
- 123 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 00:41.net]
- 「関数」は一つの名詞なので、
一旦覚えてしまえば 「関数」という訳について不自然さは感じにくい。 でも「正規表現」は「正規」と「表現」の複合語であるから、 正規な表現? という意味不明さはいつまでも残る。
- 124 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 00:43.net]
- "regular expression" というからには
regular じゃない expression もあるんでしょうか? たとえばどんなのですか?
- 125 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 08:08.net]
- >>123
fgrepに書く検索パターン
- 126 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 11:26.net]
- >>115
プログラミング用語での function は単なる「機能」ではなく、 数学的な(値を返す) function としてのニュアンスが込められているんじゃ ないのかなあ? 関数型言語ではいうに及ばず、FORTRAN とかでもそんな感じだし、 C だってもともと void 型なんてないし。 # 正規表現と関係ないので sage
- 127 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 11:34.net]
- 「機能」も造語っぽくない?
明治あたりの。
- 128 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 14:00.net]
- 関数が函数の書き換えだと知ったとき、小学校の算数の時間で関数の
説明に「ブラックボックス」という言葉を使っていたのを思い出した。 この書き換えは最悪だと思ったな。 しかし、いくら原語が同じだとしても、関数と機能は日本語としては完全に 別物になってしまっている。function key の function は、やはり「機能」の 意味でないと落ち着かない。 >>122 「正則」は、ほとんど術語としてでしか使われることがないけど、「正規」は 普通の文章でも使われるからね。「正規」と「表現」の結び付きが強くなって しまう。
- 129 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 14:00.net]
- expression にしても、「式」とも訳される場合もあって悩ましいことこの上なし
- 130 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 15:18.net]
- じつは日本語って、語彙が豊富?
まぁ、ほとんど訳語だけど。。。
- 131 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 16:19.net]
- >>127
> function key の function は、やはり「機能」の意味でないと落ち着かない。 それは「function key」を「関数キー」と読んでる人に言ってくれ。いるのか? Google で検索しても 163 件しかない上に、関数電卓の「関数キー」 (sin 関数のキーとか) だの「ハッシュ関数のキー」だのばっかりなのだが。
- 132 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 21:24.net]
- 「ファンクションキー」と言ってるのしか聞いたことがないが、この「ファンクション」
は「機能」の意味でないと落ち着かないと言ってるだけだ
- 133 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/25 22:31.net]
- >>129
自国語で数学的概念を表現できる国は少ないほうだと思われ。 微分、積分、階乗、無理数、有理数、etc... functionに対する訳で機能と函数で揉めるのは贅沢なことなんじゃないのかなぁ…… ていうか、算数、数学の教科書が日本語だけで完結できること自体、 ほかの国から見ると不思議なことなんじゃないの?
- 134 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 01:12.net]
- 何の話をしてるんだか・・・
- 135 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 01:48.net]
- では、日本における性器表現についてどうぞ
↓
- 136 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 02:04.net]
- [まち]んこ
- 137 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 05:40.net]
- \(藁田\|ワ[ロラ]タ\)
- 138 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 13:48.net]
- >>135 >>136
こういう日本語の正規表現の使える実装にはどんなのがありますか? Ruby, 鬼車, jperl, xyzzy, Emacs, あたりは使えると思うけど、ほかには?
- 139 名前:名無しさん@Vim%Chalice mailto:sage [03/04/26 13:59.net]
- Vim
- 140 名前:名無しさん@お腹いっぱい。 mailto:yosage [03/04/26 18:15.net]
- perlとかなら
/(ma|chi)nko/i みたいに i オプションつけることで 大文字小文字を同一視してくれる機能が一般的に普及してますね。 grepとか大抵の性器表現できるツールにはあるみたい。 そこでほしいのが平仮名片仮名同一視。 /[まち][んむ]こ/i とすれば「マむコ」にも「チンこ」にもマッチしてほしいわけ。 そういう機能がついた性器表現ってどういうツールにございますか? あと /ベートーヴェン/i で検索したら 「ベートーベン」や「べえとおべん」にもマッチしてくれる ようなのもあるものでしょうか?
- 141 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 18:53.net]
- >>139
後者は正規表現の範疇ではないような。 前者はあってもよさそうだね。
- 142 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 19:16.net]
- 文字クラスの拡張でしょうか
- 143 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 20:15.net]
- >>141
日本語用文字クラスってわけね。 しかしそんな日本でしか使えないもんはツールで対応すべきだな。 >>139 >/ベートーヴェン/i >で検索したら >「ベートーベン」や「べえとおべん」にもマッチしてくれる こんなん正規でも正則でもない非正規表現だ。 >>139は正規表現使うのやめた方が幸せになれそうだよ。
- 144 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 20:25.net]
- >>139 Migemoの辞書をカスタマイズすればできるようになるよ
- 145 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 21:25.net]
- >>143
そういう問題じゃなかろう・・・
- 146 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 21:27.net]
- 日本語正規表現の使える実装は Ruby, 鬼車, jperl, xyzzy, Emacs, Vim で全てですね?
- 147 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 22:05.net]
- >>145
いいえ。
- 148 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/27 02:24.net]
- 文字クラスとか自分で設定できる正規表現みたいなのが
あればいいんじゃないの。 どうせ perl だって場あたり的に好きなように拡張してるんだから。
- 149 名前:名無しさん@悩み中 [03/04/28 05:24.net]
- sed ですが、
[[:xdigit:]]\{2\} にマッチする文字列のなかで、 \(61\|75\|6f\) にマッチしないようなものを指定したいとき どないすればよろしい?
- 150 名前:148 [03/04/28 05:37.net]
- やっぱり、先に \(61\|75\|6f\) にマッチする奴を退避しておいてから、
[[:xdigit:]]\{2\} にマッチするやつを指定するしかないんかな…
- 151 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 02:16.net]
- 誰か、正規表現だけで会話するスレ作ってくれ。
- 152 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 03:26.net]
- /いったい何を会話するというのだ/
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 04:09.net]
- >>150
それこそ言いだしっぺの法則だろ。正規表現だけで会話したい >>150 が立てれ。
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 09:51.net]
- 駄スレ立てんな。
- 155 名前:名無しさん@Meadow mailto:sage [03/04/30 10:51.net]
- >>153
$mes153 =~ s/。//; reverse(split(//, $mes153)); わかた? 結果は、「なんてつたレスだ」
- 156 名前:名無しさん@お腹いっぱい。 [03/04/30 11:12.net]
- >>154
こうなりますた。 $ perl -e 'quotemeta($var='駄スレ立てんな。'); print reverse(split(//,$var));' B∧んてぉ洛スμ・
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 11:29.net]
- >>150
名スレの予感
- 158 名前:名無しさん@Meadow mailto:sage [03/04/30 14:53.net]
- >>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";
- 159 名前:名無しさん@お腹いっぱい。 [03/04/30 15:47.net]
- >>156
2chですから、性器表現とこれを用いた強制痴漢ならあちこちに。
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 21:21.net]
- \hなのはいけないと思います!
- 161 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 23:49.net]
- \SM(?:性器拡張(?!器具))
- 162 名前:名無しさん@Meadow mailto:sage [03/05/01 15:28.net]
- >>157
何やってんだろな、漏れ。 ($var='駄スレ立てんな。') =~ s/立(.+)。/たつ$1/; while ($var =~ s/^[\xA1-\xFE][\xA1-\xFE]// or $var =~ s/^.//) { push(@str, $&); } print reverse(@str), "\n"; で十分
- 163 名前:セった。この全角文字対応の正規表現は、euc-jpの奴ね。
でもさ、やっぱ正規表現で会話するってむずいよ。>>150よ。 [] - [ここ壊れてます]
- 164 名前:名無しさん@お腹いっぱい。 mailto:s/つーか全角空白使ってる時点でダメダメ/sage/; [03/05/01 21:39.net]
- print while s//>>161普通過ぎてつまらん/;
- 165 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:48.net]
- >>161
それは正規表現ではなく perl script というのではないだろうか。
- 166 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:50.net]
- >>163の的確すぎるツッコミに藁。
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:59.net]
- >>1-164
これら全てが正規表現であることは自明なのであります。
- 168 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 08:30.net]
- 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,
- 169 名前:名無しさん@お腹いっぱい。 [03/05/02 11:26.net]
- >>166
駱駝本(第二版)の p.103 の脚注 *32 に、 > もし指定された最終値が、マジックによる増加によっては生成できない > ような値なら、最終値のケタ数を超えない範囲で値を生成する。 と書いてあるけど、違う?
- 170 名前:名無しさん@Meadow mailto:sage [03/05/02 14:27.net]
- >>167ありがとん。
>マジックによる増加によっては生成できない というのが分からなかったので、駱駝本(第3版)引いたら、「マジックイン クリメント:普通の数値と同じようにして、英数字からなる文字列の値に「1 を加える」方法を知っているインクリメント演算子のこと。」だって。Aは、 16進数で41、Zは、5A。5B以下60までは、[、\, ], ^, _, `で、61から小文字。 一つずつインクリメントされて並んでいるが、できないところを見ると、「英 数字からなる文字列」だけをサポートしている演算子なんだね。 第2版の103ページにあたる121ページあたりにも、A .. Zやa .. zの例はある けど、A .. zはない。
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 22:35.net]
- 文字のインクリメントもちゃんと桁上げされるんよ。
#perl > result.txt $a = "a"; print ++$a, "\n" while (length $a < 3);
- 172 名前:169 mailto:sage [03/05/02 22:38.net]
- あ、これじゃ for (A..Z) の説明にはならないな。
- 173 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 22:50.net]
- >>166
全然正規表現じゃなかった・・・。
- 174 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/04 07:28.net]
- /\x82\xad\x82\xbb\x82\xc1/
sjis
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 11:59.net]
- >>172
パターンマッチさせる意味は?
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 18:39.net]
- >>172
1) ネタがないから 2) わし166だので、172に揶揄されて「くそっ」と
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 18:44.net]
- ちがった、171にバカにされて・・・
~~~
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 19:18.net]
- おまえらみんな(ち|い|う)んぽ。
- 179 名前:名無しさん@お腹いっぱい。 [03/05/07 16:30.net]
- 『詳説 正規表現』を読んでいるようなエキスパートの人に質問です。
「"a" が偶数個、"b" が奇数個含まれる、すべての文字列を表す正規表現」 って分かりますか? 自分は答えを見てもよく分かりませんでした。
- 180 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 17:37.net]
- まずどのような「状態」があるのかを考える。この場合は
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))*/
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 18:18.net]
- >>177
余裕があれば一度オートマトンに関する本を読んでみて。 www.amazon.co.jp/exec/obidos/ASIN/4320029488/ref=sr_aps_b_1/249-5563000-9397957 の前半はすごくわかりやすいよ。 そこまでしなくても、一度 >>178 たんのいってることを katsu.watanabe.name/grep/p7.html みたいな状態遷移図にしてみるといいかも。
- 182 名前:177 mailto:sage [03/05/07 21:15.net]
- 自分がこの問題を見たのは古い 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)* となる。 正規表現でうまく表現できない問題に当たったときは、いったん正規文法で記述してから 正規表現に変換すると解決できる場合も多い。
- 183 名前:長いので分割。 mailto:sage [03/05/07 21:17.net]
- … だそうです。
果たして↑の長い正規表現が >>178 さんの答えと同じものを表しているのかどうか 分かりませんけども。 >>179 有用な本と URL の紹介、ありがとうございました。 それにしても最初にパッと見て「この問題は有限個の状態で表せる」って思いつくかなぁ? 不思議だ。
|

|