SpecFlow C # Regex необязательный параметр в двойных кавычках - PullRequest
0 голосов
/ 02 мая 2018

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

Given I do "x"
Given I do "x", "y "
Given I do "x", "y ", " z"

Я пробовал несколько выражений:

[Given(@"I do ""(.*)"", ""(.*)?"", ""(.*)?""")]
[Given(@"I do ""(.*)"", ""(.*)""?, ""(.*)""?")]
[Given(@"I do ""(.*)"", (""(.*)"")?, (""(.*)"")?")]
[Given(@"I do ""(.*)"", [""(.*)""]?, [""(.*)""]?")]

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Regex:

I do \".*?\"(?:, \".*?\")*

Демо

Пояснение:

/I do \".*?\"(?:, \".*?\")*/
    I do  matches the characters I do  literally (case sensitive)
    \" matches the character " literally (case sensitive)
    .*? matches any character (except for line terminators)
    *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
    \" matches the character " literally (case sensitive)
    Non-capturing group (?:, \".*?\")*
    * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
        ,  matches the characters ,  literally (case sensitive)
        \" matches the character " literally (case sensitive)
        .*? matches any character (except for line terminators)
        \" matches the character " literally (case sensitive)
0 голосов
/ 02 мая 2018

Я считаю, что это соответствует / группирует то, что вы пытаетесь сопоставить

I do \"(.*?)\"(?:, \"(.*?)\")?(?:, \"(.*?)\")?

Пример регулярного выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...