2011-11-20 13 views
11

が検索を開始する正規表現を作成するにはどうすればよいですか?言い換えれば開始インデックスで正規表現を一致させる方法は?

「それはメイン文字列の先頭にない場合でも、検索の開始時に一致」、と言う\Aの同等とは何ですか?

あなたが探していることは \Gある
new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false 
+0

@NullUserExceptionఠ_ఠ:私は長いループでこれをやっているので、非常にコストがかかるでしょう。 – Mehrdad

答えて

13

new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue! 

これは実際には、私には驚きでした。私は\Gを知っていましたが、それは通常、最新の成功した試合の入力の終わりまたは最後に一致するアンカーとして記述されます。どちらもここには適用されません。これが.NETの革新であれば、それについてもっと騒がしいはずです。それはとても便利なように見えます。

EDIT: Javaのfind(int)も同じように動作します。私は広範囲に使用しています。しかし、その後、Java 5の "regions" APIを追加しました。これはより細かい制御を提供しています。私はこのイディオムを忘れていました。私は.NETでそれを探すことは決して考えなかった。

+0

私はそれがtwueだとは思わない! +1 – Mehrdad

+0

+1うわー、あなたはそれを見つけました!そして、それは[.NET 1.1](http://msdn.microsoft.com/en-us/library/h5181w5w(v = VS.71).aspx) – NullUserException

3

Oooohの私はただのオーバーロードは、我々は彼らに期待するように動作しません... Regex.Matchに関する本の中で4〜5年前〜

を私が読んだ何かを思い出しました!

過負荷

Regex.Match(string input, int index, int length) 

検索がを開始すべきところ、過負荷

Regex.Match(string input, int index) 

は単に指示に対し、検索するサブを指定します!

(1ケースそれはサブ任意位置から開始抜けて、私は推測する。)

希望、これは人々のための啓発です...

+0

+1以来存在しているようです。うん、新しい正規表現(@ "\ A \ n")が出てくる。Match( "!\ n"、1,2).Successもtwueだ。それらのトリッキーな小さな悪魔! –

関連する問題