Я новичок в регулярном выражении.
Я хочу архивировать, чтобы проверить, соответствует ли текст строки следующему шаблону.
"xxx(name="yyy", country="yyy")"
Отредактировано: xxx могут быть буквами или номерами любой длины, но должны начинаться с буквы. yyy могут быть любыми символами любой длины. Между "," и "страной" может быть ноль или любое количество пробелов.
Например, следующая допустимая строка
"TargetVal(name="White House", country="US")"
следующие строки недействительны
"TargetVal(name="White House", country="US")+546+!!!"
"343TargetVal(name="White House", country="US")"
"!TargetVal(name="White House", country="US")"
"CenterVal(name="Green House",789808 country="US")"
"CenterVal(name="Green House", country="US", dfjl)"
"OuterVal(name=Green House, country="US")"
Вот что я сделал до сих пор в С#
var formula = @"TargetVal(name=""White House"", country=""US"")";
var pattern = @"\w\(name=""\w"",\sccy=""\w""\)";
ismatching= Regex.IsMatch(formula, pattern, RegexOptions.IgnoreCase);
Очевидно, что он не работает против всех указанных правил. Может кто-нибудь дать какой-то намек?
Вы можете использовать следующее регулярное выражение.
var rgx = new Regex(@"(?i)^[a-z][a-z0-9]+\(name="".*?"",\s*country="".*?""\)$");
См. Demo
попробуйте var pattern = "^[a-zA-Z][a-zA-Z0-9 ]+\\(name=\"[a-zA-Z][a-zA-Z0-9 ]+\",\\s*country=\"[a-zA-Z][a-zA-Z0-9 ]+\"\\)$";
Я сделал предположение, что ваш xxx
не только существует из букв и цифр, но может включать пробелы (как White House
их включает).