詳説正規表現154pでバックトラックについて解説しているところでふたつの疑問があります。
"<中略>実際に使う上では、細部のいくつかの点が特に重要になる。まず、複数の選択肢があるときに、どの選択肢を最初に試すべきかという問題がある。
次に、バックトラックを強いられたときに、保存してある選択肢の中のどれを次に使うべきなのかという問題がある。<中略>"
ここで前者の問題の答えとして
"量指定子の対象となっている要素のように、選択すべきことが「マッチを試行する」か「試行しないか」かのどちらかである場合、最大量指定子では「マッチを試行する」をまず選び、最小量指定子では
「マッチを試行しない」を選ぶ。"
とあります。(a|b)のような状態のとき、+?や?などの最小量指定子のときはマッチせず、最大量指定子のときはマッチするとあります。これは具体的にどういうことなのでしょうか。
いまいち言っていることが分かりません。
後者の問題の答えとして
"要素の局所的なマッチ不成功によってバックトラックを強いられた時に次に試すべきなのは、最後に保存した選択肢である。選択肢は後入れ先出で使われる"
とあります。局所的なマッチ不成功後のバックトラックというのは、複数ある選択肢のうちのどれかがマッチしなかったので、正規表現エンジンが他の選択肢をあたろうとしているときであっておりますか。
(a|b|c)とあったら、aが成功しなければb、bが成功しなければcのように処理されると思っていたのですが、最後に保存した選択肢とは、いったいどういうことでしょうか。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> (a|b)のような状態のとき、+?や?などの最小量指定子のときはマッチせず、最大量指定子のときはマッチするとあります。
これは具体的にどういうことなのでしょうか。質問の意図が読み取れません。
この文章は、選択と量指定子がごっちゃになっていますが、どこに記述されていますか?
154p前後には見当たりませんでした。
> (a|b|c)とあったら、aが成功しなければb、bが成功しなければcのように処理されると思っていたのですが、
こちらは、ご理解の通りで良いと思います。(少なくともNFA型のエンジンでは)
153p 4.4.1.1項にその通り記載されています。
>最後に保存した選択肢とは、いったいどういうことでしょうか。
aがマッチするかトライする際に、他に選択肢としてbとcがあるという状態を保存(状態1)します。
もしaがマッチしなかった場合には、保存された状態1に戻って、bがマッチするかトライします。この時(他の選択肢としてcがあるという状態(状態2)を保存します。
bがマッチしなかった場合は、保存してあった状態2に戻って、cがマッチするかトライする。
といった動作になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- 英語 問題 : I visit the ( ) with my mom every week. 3 2022/08/15 23:49
- その他(お金・保険・資産運用) Aさんは$50,000を借りて、今後5年間で返済する必要があります。Aさんが見つけたローンは年利3. 1 2022/06/27 12:31
- その他(お金・保険・資産運用) Aさんは$50,000を借りて、今後5年間で返済する必要があります。Aさんが見つけたローンは年利3. 1 2022/06/27 12:01
- 英語 another の使い方、otherなどの使い方がわかりません。 大学に入って英文法を研究している先 3 2022/08/03 21:23
- その他(お金・保険・資産運用) Aさんは今後5年間で$50,000を貯める必要があります。Aさんが見つけた口座は、年利3.8%で、毎 1 2022/06/27 10:03
- その他(教育・科学・学問) 確率の問題 6 2022/07/27 12:00
- 大学受験 現代文の中間考査で、センター試験の追試験の過去問と同じ問題、同じ選択肢が5割も出題されます。本試験な 1 2022/10/10 11:40
- 計算機科学 アルゴリズムについて 1 2023/01/01 19:43
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで別ファイルから文字列の抽出
-
正規表現
-
コマンドプロンプトでのsedの使...
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
英数字のみ全角から半角に変換
-
「何とかで始まり、何とかで終...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
エクセルにMicrosoft Barcode C...
-
カンマ区切りの数字をCSVフ...
-
各項目がダブルクォーテーショ...
-
Excel VBAでPDFファイルをMicro...
-
住宅にカナを入力する際に丁目...
-
csvデータ ダブルクォーテ...
-
CSVの定義
-
正規表現で、特定の文字列を含...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
-
Accessのテキストボックスの入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現
-
正規表現でパスワードのチェック
-
正規表現で「円(価格)」文字列...
-
コマンドプロンプトでのsedの使...
-
sedの正規表現でグループ化する...
-
シェルスクリプト [[ $number =...
-
正規表現-数字
-
正規表現で数字をメタ文字に置...
-
正規表現 .+? について
-
この正規表現を教えて!
-
【正規表現】コメントアウトさ...
-
正規表現。行頭が○○以外にマッ...
-
Perlで別ファイルから文字列の抽出
-
正規表現について VB6
-
メールアドレスかどうかの
-
配列中の検索文字全が含まれる...
-
置換演算子についての疑問
-
配列内の要素をパターンマッチする
-
アスタリスクを検索できません
-
perlで記号除去を行いたいので...
おすすめ情報