Я пытаюсь сделать регулярное выражение для работы, о которой меня просили, но мне не повезло, что она стала достаточно эффективной.
Цель состоит в том, чтобы сделать следующее максимально эффективным.
Цель № 1. Разделяйте весь текст, используя окончание предложения (точка, 3 точки, восклицательный знак ...).
Задача № 2 Получить все числа, которые появляются после строки 'em'
Вот пример возможной маленькой строки и регулярного выражения для нее. (настоящий может быть действительно худж)
Регулярное выражение:
старый:
(?:[^.!?:]|...)(?:(?:[^.!?:]|...)*?em (\d+))*
новый:
(?:[.!?]|[.][.][.])(?:(?:[^.!?]|[.][.][.])*?\bem\b (\d+))*
работает на строку (я только что придумал)
(Я вставляю. В начале)
. То, что надо, - это баталья в 1939 году. Claro que a data que digo ser em 1939 - Uma Farsa. Em 1938 г. (вставьте EM 1910)
То, что я хотел, это сделать регулярное выражение, которое не будет возвращаться назад, поскольку ему просто не нужно возвращаться назад. Сделав так, я думаю, я смогу сэкономить на обработке, которая требует, например, ... сокращения с 30 секунд до 20 секунд или даже до 10 секунд! Только для этого1 требуется 1 с.
Добавить:
Спасибо за ответы теперь у меня есть тот, который не подведет. Но все-таки он слишком много откатывает назад. Любые решения?
Добавить (чтобы ответить на один удаленный вопрос):
К сожалению, у меня нет образцов данных. Кто попросил меня сделать это, тот сказал, что у него также нет образцов данных, но это нужно сделать «до вчерашнего дня». Если вы дадите мне что-то, что работает с этим текстом настолько эффективно, насколько это возможно, я уверен, что смогу работать с ним и скрытно, если понадобится что-то конкретное для этой работы. Иначе я спрошу здесь снова.