- ベストアンサー
現在、改行コードを含めた任意の文字列を探す為に
現在、改行コードを含めた任意の文字列を探す為に "[\s\S]*"という正規表現を使っています。 これで問題なく動作はするのですが ブラケット中の最初の文字がマッチした場合、もしそれ以降は評価しないとしたら 一般的な文章では"\s"よりも"\S"にマッチする文字の方が多いことを考えると "[\S\s]*"と修正する方が速度は上がるのかな。と思い、質問させていただきました。 正規表現でブラケットを使う場合 マッチする文字を見つけたら、以降の文字は評価されないのでしょうか。 環境はVisualStudio2008・C#上で行っています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一般に、正規表現は内部表現にコンパイルされてから使われますが、文字クラスは文字コードを添え字にしてテーブルを引くように実装されると思います(わたしならそうします)。 従って、[\s\S]と[\S\s]は同じで、[A-Z]と[ABCDEFGHIJKLMNOPQRSTUVWXYZ]も同じ。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.1
書いた通りの順番でマッチングするかどうかはわかりません。 おそらく、もっと最適な方法が取られていると思います。 気になるのなら、Singlelineオプションで.を改行にもマッチするようにするのはいかがでしょう?
質問者
お礼
改行にマッチさせるオプションは.NETにはないものと勝手に思い込んでいました。 勉強になりました。ありがとうございます。早速使ってみます。
お礼
なるほど。C言語系の「∥」などとは動作の構造が本質的に違うのですね。 勉強になりました。ありがとうございました。