2011-11-20 16 views
11

aramaya başladığı yere uyan bir düzenli ifade nasıl oluşturabilirim?Regex, başlangıç ​​dizini ile nasıl eşleştirilir?

"ana dize başında olmasa bile, aramanın başlangıcında maçı" diyor \A eşdeğer nedir: Bir başka deyişle

?

new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false 
+0

@NullUserException ఠ_ఠ: Ben Bunu uzun bir döngüde yapacağız, bu yüzden çok maliyetli olur. – Mehrdad

cevap

13

Ne aradığınız \G geçerli:

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

Bu

aslında, benim için bir sürpriz oldu. \G hakkında bilgi sahibi oldum, ancak genellikle girişin başına veya en son başarılı eşleşmenin sonuna uyan bir bağlantı olarak tanımlanır. Bu bir .NET yeniliği ise, bu konuda daha fazla ses çıkarmalılar; Çok kullanışlı olabilir gibi görünüyor.

DÜZENLEME:, düşünmek gel Java'nın find(int) aynı şekilde çalışır - yapmam gerektiğinde bile yaygın olarak kullanılır. Fakat daha sonra Java 5'te "bölgeler" API'sini eklediler, bu da çok daha iyi bir kontrole sahipti ve bu deyimi unutmuştum. .NET'de bakmayı hiç düşünmemiştim. Aşırı yüklerin biz beklediğiniz şekilde davranmazlar

+0

Bunun twue olduğuna inanamıyorum! +1 – Mehrdad

+0

+1 Wow, onu buldun! Ve [.NET 1.1] (http://msdn.microsoft.com/en-us/library/h5181w5w (v = VS.71) .aspx) – NullUserException

3

Ooooh şimdi hatırladım bir şey Regex.Match ilgili bir kitapta 4-5 yıl önce ~ okumuştu ...!

aşırı yük

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

arama başlamalıdır nerede

Regex.Match(string input, int index) 

sadece dikte aşırı oysa aramak için alt dize belirtir!

(o dışarıda bırakır bir vaka sanırım bir alt dize bir keyfi konumdan başlayarak.)

Umut bu insanlar için aydınlatıcı olduğunu ...

+0

+ 1'den beri varmış gibi görünüyor. Evet, yeni Regex (@ "\ A \ n") çıkıyor. Match ("! \ N", 1, 2) .Success 'da twue. Bu zor küçük şeytanlar! –

İlgili konular