Я не знаю точной терминологии и поэтому, к сожалению, не смог найти решение для своего конкретного случая.
Я знаю, как найти одно слово, за которым не следует другое предопределенное слово, используя отрицательный поиск вперед. Пример
Моя цель состоит в том, чтобы сопоставить только самую большую возможную фразу, которая будет сопоставляться без дополнительной проверки предшествующего слова. Если они следуют за запятой, мне не нужны совпадения в этой группе. Если нет запятой впереди, я хочу, чтобы все они были в одной фразе.
Моя основная идея заключалась бы в том, чтобы сделать обычное регулярное выражение и снова проверить, есть ли запятая перед совпадением. Но можно ли это сделать за один проход?
Пример (глупый): Дом 566 819 , 94841 681 , хороший 4571 68484 81981
Идеальный выход:
566 819
4571 68484 81981
Я хочу, чтобы все числа, которые не следуют непосредственно за запятой (желаемые совпадения выделены жирным шрифтом), совпадали как одно большое совпадение.
Мое текущее регулярное выражение для этого случая выглядит так:
\b(?!,)\s((\d+\s*)+)
Однако он также находит 681, потому что это число и перед ним нет запятой. Это нежелательное для меня поведение.
Надеюсь, я достаточно хорошо объяснил свою проблему. Есть ли способ достичь моей цели?
(?!,)\s
является избыточным, поскольку пробел не является запятой. - person Casimir et Hippolyte   schedule 08.08.201694841
не соответствует из-за\b
, а не из-за просмотра назад. - person Sebastian Proske   schedule 08.08.2016