Спасибо всем, кто попытается мне помочь.
Я изо всех сил пытаюсь создать регулярное выражение, которое может сделать этот случай:
Я хочу, чтобы каждое совпадение "Heure Pleine Saison Basse" происходило после первого появления "Acheminement conso".
Используя необработанный текст ниже, я хочу сопоставить "Heure Pleine Saison Basse" 3 5 6 7, а не 1 и 2.
Не используйте номер внутри символьного распознавания, он просто здесь, чтобы помочь вам понять, какую цепочку я хочу сопоставить.
Этот пример регулярного выражения соответствует только последнему вхождению:
Acheminement[\s\S]*(Heure Pleine Saison Basse)
Вот отличный пример необработанного текста:
Electricité n° de\n
compteur ancien\n
index nouvel\n
index conso\n
kWh/Qté prix unitaire\n
HT en euros montant HT\n
en euros taux de\n
TVA\n
Contribution cee du 14/07/22 au 13/08/22 143020,00495 70,7920,0%\n
Evolutions arenh du 14/07/22 au 13/08/22 14302-0,03149 -450,3720,0%\n
Consommation du 14/07/22 au 13/08/22 154\n
Heure Pleine Saison Basse 1
Heure Pleine Saison Basse 2
Heure Creuse Saison Basse 2
Acheminement conso\n
kWh/Qté prix unitaire\n
HT en euros montant HT\n
en euros taux de\n
TVA\n
Composante de comptage du 1
Composante de comptage du 2
Composante de soutirage du 1
Composante de soutirage du 2
Composante de gestion 1
Composante de gestion 2
Consommation du 14/07/22 au 31/07/22 Heure Pleine Saison Basse 56200,02000 112,4020,0%\n
Heure Creuse Saison Basse 26840,01700 45,6320,0%\n
Consommation du 01/08/22 au 13/08/22\n
Heure Pleine Saison Basse 3
Heure Creuse Saison Basse 4
Heure Pleine Saison Basse 5
Heure Pleine Saison Basse 6
Heure Pleine Saison Basse 7
Services et prestations techniques conso\n
kWh/Qté prix unitaire\n
HT en euros montant HT\n
en euros taux de\n
TVA\n
Espace Client Gratuit\n
Taxes et Contributions conso\n
Это работает, вы потрясающие, вы можете опубликовать это как ответ, чтобы я мог пометить его как принятый ответ
Было бы невероятно, если бы вы нашли время, чтобы немного объяснить это, чтобы я мог лучше понять, какую технику вы использовали :)
Это регулярное выражение удивительно.






Вы можете использовать
'/(?:\G(?!\A)|Acheminement conso)[\s\S]*?\KHeure Pleine Saison Basse/u'
'/(?:\G(?!\A)|Acheminement conso).*?\KHeure Pleine Saison Basse/su'
Посмотрите демонстрацию регулярного выражения . Подробности:
(?:\G(?!\A)|Acheminement conso) - либо Acheminement conso, либо конец предыдущего совпадения (\G(?!\A) соответствует тому, что соответствует оператору \G, за исключением позиции в начале строки, которая «отменяется» с отрицательным опережением (?!\A))[\s\S]*? - любые ноль или более символов как можно меньше\K - опустить текст совпавший до сих порHeure Pleine Saison Basse - фиксированная строка.Флаг u необходим, когда вам приходится иметь дело со строками Unicode.
Флаг s полезен для того, чтобы . соответствовал любым символам, включая разрывы строк.
Если бы я мог. У меня есть аналогичный вариант использования с событием в конце: Если я опишу его: Сопоставьте все «пуанты» между «Обязательство Capacité» и «Acheminement conso». Здесь первые 2 совпадения верны, а третье не очень хорошо и может быть предотвратить возникновение "Acheminement conso" regex101.com/r/SOsd3y/1
Извините, если я прошу больше примеров, но мне действительно нужно быть лучше в регулярных выражениях, и такой пример поможет мне многому научиться.
@ThomasL Думаю, вам нужно что-то вроде regex101.com/r/SOsd3y/2
Это работает, потрясающе! но это тоже работает regex101.com/r/zgeKmK/1 Итак, почему вы добавили эту группу (?:(?!Обязательство Capacité)[\s\S]) ? Я прошу лучше понять ваше мышление, не потому что я считаю его неправильным :)
@ThomasL Умеренный жадный токен используется, чтобы убедиться, что совпадение происходит только между ближайшим A и любым крайним правым B. Вы можете игнорировать это ограничение. Смотрите эту тему, чтобы понять это.
Нравится
/(?:\G(?!\A)|Acheminement conso)[\s\S]*?\KHeure Pleine Saison Basse/u? См. regex101.com/r/GNx87r/1