Регулярное выражение для соответствия началу строки и между определенным словом

У меня есть такая строка:

<a href="/article/aujourd-hui-moment-calin-avec-mon-copain-attache-et-a-4-pattes-il-finis-en-moi-et-recoit-u_267211.html"> Aujourd&#x2019;hui, moment &#xE0; la fois c&#xE2;lin et torride avec mon copain. On se fait un petit d&#xE9;lire BDSM et, me retrouvant &#xE0; 4 pattes, il m&apos;attache. Apr&#xE8;s cette session o&#xF9; on en a fini, il re&#xE7;oit un appel urgent et part. En me laissant comme &#xE7;a. VDM </a>

и я бы хотел получить вот это:

Aujourd&#x2019;hui, moment &#xE0; la fois c&#xE2;lin et torride avec mon copain. On se fait un petit d&#xE9;lire BDSM et, me retrouvant &#xE0; 4 pattes, il m&apos;attache. Apr&#xE8;s cette session o&#xF9; on en a fini, il re&#xE7;oit un appel urgent et part. En me laissant comme &#xE7;a. VDM

Я провел исследование и преуспел с этим регулярным выражением

[^>]+(?=\<)

проблема в том, что у меня есть другая такая строка:

<a href="/aleatoire">Al&#xE9;atoire <span class="rub_icon icon-dice"></span></a>

с этой строкой и регулярным выражением я получаю Al&#xE9;atoire и этот не хорошо.

Поэтому я хочу улучшить Regex до ПОЛУЧИТЬ ТОЛЬКО Все предложение, которое НАЧИНАЕТСЯ с Aujourd&#x2019;hui Может у кого-нибудь есть решение? Я не использую Regex.

Уравнение дня: regex + HTML = EVIL!!!

Tim Biegeleisen 11.04.2018 13:02

Regex не имеет языка. Я просто хочу проанализировать строку, отформатированную как HTML, но в основном это простые слова и символы.

Arnauld Alex 11.04.2018 13:27

Вы добавляли разрывы строк, чтобы улучшить читаемость, или есть 7 строк ввода? Или 3? Или это не важно? Приложив немного фантазии, вы можете сгенерировать миллионы регулярных выражений, которые соответствуют одному конкретному случаю.

user unknown 11.04.2018 15:37
1
3
56
2

Ответы 2

Итак, исходя из вашего объяснения:

>\s?(Aujourd&#x2019;hui.*?)\s?<

>< specifies that content is between brackets (outside of html)

\s? specifies that there may be, but doesnt have to be whitespace

без:

 <a>string</a>

с участием:

 <a>
   string
 </a>

 Aujourd&#x2019;hui specifies match has to start with this word

 .*? specifies optional additional characters in string

Надеюсь, порядок очевиден.

edit: to avoid confusion, we are talking about _match functions, with full regex being />\s?(Aujourd&#x2019;hui.*?)\s?</g.

https://regex101.com/r/F0bPWN/2

Нет, я хочу, чтобы результат был указан. с базовым регулярным выражением, без HTML или кода сценария, только с регулярным выражением. И чтобы доказать, что регулярное выражение работает, если мы проверим его на последней строке, оно не должно ничего возвращать.

Arnauld Alex 11.04.2018 13:29

пожалуйста, не могли бы вы указать, где и как используется регулярное выражение, если не как часть javascript, jquery или php? Кроме того, вы хотите, чтобы он повторил первое появление содержимого между html? или что-нибудь, начинающееся с указанного слова? или же? Я вижу, что вам нужно что-то вернуть в первом случае, а во втором - ничего. но чтобы правильно указать, в чем разница между этими случаями, мне нужно увидеть более широкую картину.

Round-Sliced 11.04.2018 13:47
regex101.com/r/F0bPWN/1 принимает эту ссылку как рабочую область. Нет языка, только регулярное выражение. Мне нужна только строка, начинающаяся на Aujourd&#x2019;hui
Arnauld Alex 11.04.2018 14:04

* это не ясно в вашем вопросе, но скажем, что вы: что: читаете весь html файл 2. хотите извлечь все подстроки, которые находятся внутри> <, и начать с определенного слова 3. вы делаете это в javascript или php? с помощью каких функций? внутри html <input> с атрибутом pattern = ""? любое приложение? если вы укажете их правильно, вам будет легко помочь.

Round-Sliced 11.04.2018 14:08

если вам нужна только эта ссылка, вы можете скопировать ее вручную. дело в том, что вам нужно какое-то приложение или скрипт для его обработки, верно? затем укажите, что это такое.

Round-Sliced 11.04.2018 14:11

Ни приложения, ни атрибута, ничего. Я не знаю, как сказать, но это всего лишь регулярное выражение. Вы получаете то, что я хочу сделать, но ... за этим нет языка программирования. Перейдите по этой ссылке, пожалуйста, вы поймете: RegexTester Эта ссылка находится здесь, чтобы СОЗДАТЬ и ПРОВЕРИТЬ регулярное выражение.

Arnauld Alex 11.04.2018 14:12

Хорошо, поэтому по ссылке я вижу php: preg_match_all () и аналогичные функции на других языках. дело в том, что вы можете использовать _match или _replace и, глядя на отправленную ссылку, вы практически указали метод использования регулярного выражения.

Round-Sliced 11.04.2018 14:25

Я сдаюсь. Я не могу больше объяснить. TY кстати

Arnauld Alex 11.04.2018 14:30

> \ n? (Aujourd & # x2019; hui. *?) \ n? <но обратите внимание, что он используется для соответствия, а полное регулярное выражение: />\n?(Aujourd&#x2019;hui.*?)\n?</g . также он может не работать должным образом, если вы введете дополнительный ввод, соответствующий параметрам.

Round-Sliced 11.04.2018 14:38

извините, изменение с \ n? к \ с? позволит использовать любые пробелы, даже табуляции, пробелы и т. д., более подходящие для html

Round-Sliced 11.04.2018 14:51

В Sed, чтобы печатать только строки, не начинающиеся с тега, вы можете использовать:

sed -n '/^[^<].*$/p' fr.html 
Aujourd&#x2019;hui, moment &#xE0; la fois c&#xE2;lin et torride avec mon copain. On se fait un petit d&#xE9;lire BDSM et, me retrouvant &#xE0; 4 pattes, il m&apos;attache. Apr&#xE8;s cette session o&#xF9; on en a fini, il re&#xE7;oit un appel urgent et part. En me laissant comme &#xE7;a. VDM

Или вы можете сделать противоположное дважды, удалив строки, начинающиеся с тега:

sed  '/^<.*$/d' fr.html 
Aujourd&#x2019;hui, moment &#xE0; la fois c&#xE2;lin et torride avec mon copain. On se fait un petit d&#xE9;lire BDSM et, me retrouvant &#xE0; 4 pattes, il m&apos;attache. Apr&#xE8;s cette session o&#xF9; on en a fini, il re&#xE7;oit un appel urgent et part. En me laissant comme &#xE7;a. VDM

Другие вопросы по теме