Кто-нибудь знает более чистый способ написать это регулярное выражение? - PullRequest
0 голосов
/ 20 сентября 2019
(?:reminder|Reminder)\s\d+\s\b(?:second|seconds|Second|Seconds|minute|minutes|Minute|Minutes|hour|hours|Hour|Hours|day|days|Day|Days|week|weeks|Week|Weeks|month|months|Month|Months|year|years|Year|Years)\b

Объективный формат: «Напоминание 3 секунды», «Напоминание 20 дней», «Напоминание 3 секунды» и т. Д.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2019

[rR]eminder\s\d+\s(?:[sS]econd|[mM]inute|[hH]our|[dD]ay|[wW]eek|[mM]onth|[yY]ear)s?\b

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

1 голос
/ 20 сентября 2019

Я предполагаю, что, возможно, здесь может быть меньше границ,

(?i)\breminder\s+\d+\s+\b(?:seconds?|minutes?|hours?|days?|weeks?|months?|years?)\b

, а может и нет.

Демо

Тест

import re

expression = r"(?i)\breminder\s+\d+\s+\b(?:seconds?|minutes?|hours?|days?|weeks?|months?|years?)\b"
string = """
Reminder 3 seconds some data here, Reminder 20 days and some more data, Reminder 3   second and Reminder  3  WEek
"""

print(re.findall(expression, string))

Выход

['Reminder 3 seconds', 'Reminder 20 days', 'Reminder 3   second', 'Reminder  3  WEek']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...