RegEx - буфер LIFO на событиях матча
Как можно создать буфер LIFO для событий совпадения с помощью регулярных выражений в Javascript?
Вот пример:
Входные данные:
4 Mål Vålerenga, 1 - 0 Torgeir Børven. Målgivende pasning Daniel Fredheim Holm.<br> Dagens kaptein, Fredheim Holm, med en smart stikker til Børven, som drar seg fri og tupper ballen vakkert i lengste hjørne. Vålerenga innleder jubileet med 1-0!<br>
3 Fellah spilles fri på høyreflanken, men assistentdommeren vinker som om det skulle være 100-årsjubileum og 17. mai på en gang. Offside.
2 Corner Sarpsborg 08, Gudmundur Thórarinsson. Klareres.<br>
1 Kampen starter med forbrødring mellom keeperne. Kongshavn banker ballen helt over til kollega Sukke.<br>
Выход должен быть:
1 Kampen starter med forbrødring mellom keeperne. Kongshavn banker ballen helt over til kollega Sukke.<br>
2 Corner Sarpsborg 08, Gudmundur Thórarinsson. Klareres.<br>
3 Fellah spilles fri på høyreflanken, men assistentdommeren vinker som om det skulle være 100-årsjubileum og 17. mai på en gang. Offside.<br>
4 Mål Vålerenga, 1 - 0 Torgeir Børven. Målgivende pasning Daniel Fredheim Holm.<br>
1 ответ
Это невозможно только с помощью регулярных выражений (по крайней мере, в виде регулярных выражений JavaScript), но вы можете использовать сопоставление или разбиение регулярных выражений и reverse
:
Если ваш ввод такой же простой, как в вопросе, то вместо сопоставления вы можете разделить. Мы просто разделяем строку в начале каждой строки:
result = str.split(/^/m).reverse().join("");
В более сложных ситуациях разделение может быть не таким простым, и вам действительно нужно соответствовать. Продолжая использовать ваш пример, вы можете сопоставить строки с .*\n
(поскольку .
не может соответствовать разрывам строк). В этом случае вы можете использовать
result = str.match(/.*\n/g).reverse().join("");
Проблема здесь состоит в том, чтобы гарантировать, что ваши совпадения будут охватывать всю входную строку - иначе символы будут потеряны в процессе (это не может произойти с split
подход - но некоторые проблемы будут трудно решить с помощью регулярного выражения JavaScript в split
).