
正規表現で数字をメタ文字に置換えると結果が異なる理由が分かりません。
現在、正規表現でチェックするコードがあります。
この正規表現中の数字「9」を「\d」に置換えました。
置換え前) 置換え後)
9([x]c+)*& \d([x]c+)*&
VisualStudio2008のC#にて実装し、文字列「9xc1&」で
テストすると結果が異なりました。
(Regexクラスのオプションはデフォルトのまま)
Regex.IsMatch("9xc1&", @"9([x]c+)*&") == false
Regex.IsMatch("9xc1&", @"\d([x]c+)*&") == true
置換え前が正しいと思うのですが、メタ文字に置換えると
グループやアスタリスクの影響を受けるのでしょうか?
アドバイスをお願い致します。
No.2ベストアンサー
- 回答日時:
\dは9と同じではなく、[0-9]と同じです。
マッチの流れはこんな感じになるのではないでしょうか?
1.正規表現\dが9にマッチする。
2.正規表現([x]c+)*がxcにマッチする。
3.正規表現&がマッチ失敗となる。
4.正規表現([x]c+)*がマッチをあきらめる。
5.再び、正規表現&が、マッチを試みるがマッチ失敗となる。
まだ、未調査のテキストがある為、正規表現は続く。
6.今度は、正規表現\dが1にマッチする。
7.正規表現([x]c+)*がマッチを試みるがマッチ失敗となり、マッチをあきらめる。
8.正規表現&がマッチに成功し、全体としてマッチが成功する。
ご回答ありがとうございます。
テキストの先頭からマッチを進めて、未調査テキストがある限り
パターンマッチを最初から繰り返し続けるということですね。
新たにテスト文字列のバリエーションを増やして実行したところ、
「9xc^%2&」もtrueとなってしまいました。
ご回答の通り、ハットパーセントまで読み捨てて
「2&」で一致すると考えると納得いきます。
数日間ずっと考えていましたが、とりあえず整理つきました。
この度はありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列中の検索文字全が含まれる...
-
正規表現のパターンに変数を指...
-
正規表現
-
perlで記号除去を行いたいので...
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
文字コードの%E3%80%とは何です...
-
Visual Studioで ユニコード "...
-
全角英数字の必要性が理解できない
-
Excelについて質問です。 セル...
-
プログラミングの問題です。
-
EXCELからCSVにすると余計なカ...
-
CString Format にて全角空白文...
-
SJIS->UTF8->SJISコード変換に...
-
CString から LPCTSTRの型に変換
-
正規表現で、特定の文字列を含...
-
プログラミングでは、半角括弧...
-
capeofdragonと申します Excel2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報