Как пропустить символ, попадающий между строкой? - PullRequest
0 голосов
/ 25 марта 2019

Я очень плохо знаком с регулярным выражением, мне нужно было получить конкретное значение из строки, содержащейся между ' '

Использование регулярного выражения позволило получить значения, но получить исключение при наличии третьего ' между ' '.

Переменная rule содержит всю строку

IEnumerable<string> possibleValues = Regex
    .Matches(rule, @"'(?<val>.*?)'")
    .Cast<System.Text.RegularExpressions.Match>()
    .Select(match => match.Groups["val"].Value)
    .ToArray();   

Когда передается следующая строка

RULE: 'Street Address
должно быть «Самирский комплекс, 4-й этаж, Андреевская дорога, Бандра (запад)» (значение по умолчанию)

Ожидаемые значения: Адрес улицы и Самирский комплекс,4-й этаж, Сент-Эндрюс-роуд, Бандра (запад)

, но получая Адрес улицы и Самир Комплекс, 4-й этаж, Сент-Эндрю

1 Ответ

6 голосов
/ 25 марта 2019

При сопоставлении апострофов вы не хотите сопоставлять с каждым : в вашем случае ' в Andrew's должно быть пропущено . Вы можете попробовать проверить границы слова ; см. подробности в Разница между \ b и \ B в регулярном выражении

@"'(?<val>.*?)'\B"

Код:

string[] possibleValues = Regex
  .Matches(rule, @"'(?<val>.*?)'\B")
  .Cast<Match>()
  .Select(match => match.Groups["val"].Value)
  .ToArray();  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...