![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
--ここから引用
SFC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c /
missing.c msg.c node.c re.c version.c
この種の"変数=値"という形式の代入行は、「^\w+=.*」でマッチさせたいところだが、この正規表現は後続行を認識しない。
継続行にマッチさせるために、正規表現に「(\\\n.*)*」を追加して、「^\w+=.*(\\\n.*)*」としてみたらどうだろうか。一見したところ、エスケープされた改行の後に続く限り、
論理行がいくつあっても許されるように思われる。しかし、従来型NFAでは、この正規表現はうまく機能しない。最初の「.*」が開業にたどり着いたときには、すでにバックスラッシュは通り過ぎており、
追加された部分は、「.*」に強制的にバックトラックさせるだけの力を持っていない。
--ここまで引用(詳説正規表現より)
ここで質問ですが、なぜ追加された部分である「(\\\n.*)*」は、バックトラックさせるほどの力を持っていないのでしょうか。
またこの場合、バックトラックさせたい位置は、一行目と二行目を繋げているバックスラッシュの前までで合っておりますか。
No.1ベストアンサー
- 回答日時:
誤 SFC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c /
正 SFC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c \
> なぜ追加された部分である「(\\\n.*)*」は、バックトラックさせるほどの力を持っていないのでしょうか。
最後に「*」が付いているので、「長さ0の文字列」にマッチ可能だからです。その場合「.*」が抱え込んだ文字列から文字を奪い取る必要がありません。
参照148pの4.2.4.2項の「バックトラックさせるほどの力を持っている例」と比較すればわかり易いですね。
例えば、「(\\\n.*)+」であればバックトラックさせる力を持つことになります。
> バックトラックさせたい位置は、一行目と二行目を繋げているバックスラッシュの前までで合っておりますか。
「(\\\n.*)」が何にマッチするかを考えれば、自ずと明らかになるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 関係代名詞「非制限用法」が説明する先行詞が無冠詞複数形の場合「一般的総称」と見なすことの可否について 10 2022/07/20 10:19
- 政治 日本で梅毒が増え続けているのは自民党が性犯罪に甘いからですよね? 7 2022/11/04 11:25
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- 政治 小泉自公政権になってからも、善政・善行は何一つ行わず、悪政・悪行・犯罪・テロ・噓八百等々 1 2022/06/02 18:22
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- 政治 自民党は憲法95条に違反してますね? 1 2023/08/16 11:41
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現 秀丸エディタ 行頭か...
-
正規表現でシングルクォーテー...
-
MFCで正規表現
-
正規表現です。括弧内にある複...
-
PS4コントローラーをPCでゲーム...
-
wordの何も書かれていない2ペー...
-
「彡」って文字はなんという文...
-
4Kの外部モニターに出力すると...
-
EBCDIC⇒SJIS変換の方法
-
EXCELで=より左の文字を一括で...
-
エクセルでアルファベットか数...
-
VBAでの Replace関数で、ワイル...
-
Chr(13)とChr(10)の違いは?
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
文字列からタブコードを取り除...
-
パワーポイントで文字の上に線...
-
エクセルで文字列をtxtファイル...
-
1文字って1バイトだったっけ?
-
エクセルで文字列の最大値を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【3桁の数字】に【完全一致】す...
-
正規表現 秀丸エディタ 行頭か...
-
[VBS] テキストファイルから任...
-
正規表現でAND検索はできる...
-
メールアドレスの正規表現について
-
C言語のコメントを「正規表現」...
-
vbaの正規表現で、マッチした一...
-
文章中全ての半角カッコ ( の...
-
正規表現でシングルクォーテー...
-
正規表現です。括弧内にある複...
-
(秀丸)正規表現で、特定文字列...
-
C# 数列の読み込み
-
下記の正規表現のお願いですが...
-
正規表現で大文字小文字指定に...
-
正規表現の仕様について
-
python 正規表現
-
スパムメールをブロックするた...
-
第二水準漢字が含まれるか?
-
grepの正規表現での最短マッチ...
-
正規表現
おすすめ情報