Что ж, этот конкретный шаблон можно сопоставить с
if (sToken.StartsWith("(") && sToken.EndsWith(")")
&& sToken.Contains(","))
, но в целом вы можете найти, что имеет больше смысла использовать регулярные выражения.Например:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
Regex regex = new Regex(@"^\(.*,.*\)$");
Console.WriteLine(regex.IsMatch("x(a,b)")); // False due to the x
Console.WriteLine(regex.IsMatch("(a,b)x")); // False due to the x
Console.WriteLine(regex.IsMatch("(ab)")); // False due to the lack of ,
Console.WriteLine(regex.IsMatch("(a,b")); // False due to the lack of )
Console.WriteLine(regex.IsMatch("(a,b)")); // True!
Console.WriteLine(regex.IsMatch("(aaa,bbb)")); // True!
Console.WriteLine(regex.IsMatch("(,)")); // True!
}
}
Что следует отметить с шаблоном здесь:
- Я использовал дословный строковый литерал (@ в начале)чтобы упростить выполнение экранирования в регулярном выражении
- ^ и $, чтобы оно соответствовало целом строке
- Скобки экранированы, чтобыне рассматриваются как операторы группировки
Страница MSDN "Элементы языка регулярных выражений" является хорошим справочником для регулярных выражений .NET.