RegEx - 匹配事件的LIFO缓冲区

时间:2013-08-03 06:47:23

标签: javascript regex lifo

如何通过在Javascript中使用正则表达式在匹配事件上创建LIFO缓冲区?
这是一个例子:

输入:

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 个答案:

答案 0 :(得分:0)

仅使用正则表达式是不可能的(至少在JavaScript的正则表达式中),但您可以使用正则表达式匹配或拆分以及reverse

如果您的输入与问题中的输入一样简单,那么您可以拆分而不是匹配。我们只是在每行的开头拆分字符串:

result = str.split(/^/m).reverse().join("");

在更复杂的情况下,拆分可能并不那么容易,实际上你需要匹配。仍然使用您的示例,您可以使用.*\n匹配行(因为.无法匹配换行符)。在这种情况下,您可以使用

result = str.match(/.*\n/g).reverse().join("");

这里的问题是确保你的匹配将覆盖整个输入字符串 - 否则字符在过程中丢失(split方法不会发生这种情况 - 但是一些问题将难以解决split)中的JavaScript正则表达式。