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).

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