Как сопоставить временное расположение (м с) - PullRequest
0 голосов
/ 15 марта 2019

Я не силен в сопоставлении с образцом регулярных выражений, но мне нужна помощь.Я пытаюсь сопоставить этот шаблон с помощью Regex.Match:

  • 5 м 26 с
  • 3 м
  • 42 с
  • 7 м
  • 4m 02s

Я проверил сайт и нашел некоторую помощь, но это не на 100% то, что я ищу (не захватывает 3m и 7m или что-либо еще с этими типами значений), вседругое значение соответствует.

Основываясь на моих выводах, я собрал следующую схему:

(m\s+)?(?:[1-5]?\ds)

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 15 марта 2019

Этот шаблон работает для всех ваших примеров:

\b[0-5]?\d(?:m(?:\h[0-5]?\ds)?|s)\b

Демо: https://regex101.com/r/FdmNII/3

Разбивка:

\b                  # Word boundary.
[0-5]?\d            # A number between 00 and 59.
(?:                 # Start of 1st non-capturing group.
    m               # Matches the character `m` literally.
    (?:             # Start of 2nd non-capturing group.
        \h          # Any horizontal whitespace.
        [0-5]?\d    # A number between 00 and 59.
        s           # Matches the character `s` literally.
    )               # End of 2nd non-capturing group.
    ?               # Indicates that the previous group is optional.
    |               # Alternation (OR).
    s               # Matches the character `s` literally.
)                   # End of 1st non-capturing group.
\b                  # Word boundary.

Если вытакже, если вы хотите сопоставить что-то вроде 01m01s, вы можете сделать пробел необязательным (т. е. \h? вместо \h).

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