Bu şekilde kullanın:
Regex MyRegex = new Regex(@"(?i:[a-z]+)");
önek (?<option>:<pattern>)
ile desenine satır içi seçeneği. Bu durumda IgnoreCase için seçenek "i" dir.
Yukarıdaki iki nokta üst üste belirterek, yalnızca o desene ayarlı olursunuz. seçenek kendi başına bunu başlangıçta ayarlayabilirsiniz Tüm örneğin uygulanır hale getirmek için:
@"(?i)[a-z]+"
Birden seçenekleri kullanabilirsiniz ve bunları açmak ve kapatmak da mümkündür:
// On: IgnoreCase, ExplicitCapture. Off: IgnorePatternWhitespace
@"(?in-x)[a-z]+"
Bu tüm modelde RegexOptions
kullanıldığında mümkün olmayan farklı bir noktadaki seçenekleri etkinleştirmek/devre dışı bırakmak için bir modelde esneklik sağlar.
Biraz ayrıntılı bir örnek aşağıdadır.Seçeneklerin ne zaman etkili olduğunu anlamak için onunla oynamanızı tavsiye ederim.
string input = "H2O (water) is named Dihydrogen Monoxide or Hydrogen Hydroxide. The H represents a hydrogen atom, and O is an Oxide atom.";
// n = explicit captures
// x = ignore pattern whitespace
// -i = remove ignorecase option
string pattern = @"di?(?nx-i) (hydrogen) | oxide";
var matches = Regex.Matches(input, pattern, RegexOptions.IgnoreCase);
Console.WriteLine("Total Matches: " + matches.Count);
foreach (Match match in matches)
{
Console.WriteLine("Match: {0} - Groups: {1}", match.Value, match.Groups[1].Captures.Count);
}
Console.WriteLine();
// n = explicit captures
// x = ignore pattern whitespace
// -i = remove ignorecase option
// -x = remove ignore pattern whitespace
pattern = @"di?(?nx-i) (?<H> hydrogen) (?-x)|oxide";
matches = Regex.Matches(input, pattern, RegexOptions.IgnoreCase);
Console.WriteLine("Total Matches: " + matches.Count);
foreach (Match match in matches)
{
Console.WriteLine("Match: {0} - Groups: {1}", match.Value, match.Groups["H"].Captures.Count);
}
yukarıda çıktısı şudur: her iki desen RegexOptions.IgnoreCase
de
Total Matches: 3
Match: Dihydrogen - Groups: 0
Match: oxide - Groups: 0
Match: oxide - Groups: 0
Total Matches: 3
Match: Dihydrogen - Groups: 1
Match: oxide - Groups: 0
Match: oxide - Groups: 0
"Dihidrojen" (büyük D) eşleşen ve böylece "di" durum duyarsız olmasını sağlar kullanılmaktadır ve kapanır. Açık yakalama açık olduğundan, ilk örnek, (hydrogen)
için herhangi bir gruba sahip değildir, çünkü adlandırılmış bir grup kullanmaz, bu da açıkça yakalama gereksinimidir. İkinci model (?<H> hydrogen)
kullandığı için 1 gruba sahiptir.
Ardından, ikinci desenin sonunda (?-x)|oxide
'u kullanmak üzere değiştirildiğini fark edin. IgnorePatternWhitespace, hidrojen yakalama işleminden sonra devre dışı bırakıldığından, desenin geri kalanı, daha sonra desende (?x)
açık olarak açılana kadar ek beyaz boşluk (birinci kalıpla karşılaştırın) içermeyecek şekilde doğru şekilde oluşturulmalıdır. Bu, gerçek bir amaca hizmet etmez, ancak gerçekte ne zaman başladıklarını göstermek için inline seçeneklerinin derinlemesine kullanılmasını gösterir.
Teşekkürler. Yani eğer birden fazla değiştirici kullanmak istersem, sadece (? I) 'yerine' (? Imsx) 'yi yapıyorum? – Aillyn