如何获得匹配正则表达式的多行文本的最后一行?

时间:2018-04-01 16:21:21

标签: javascript regex

我现在正在寻找如何获得多行文字的最后一行。

For example with :

Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante 
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum. 

我会得到:

imperdiet. Duis sagittis ipsum.

我尝试使用正则表达式:

var y = x.match(/[\S]+$/);

但它返回:

null

如何在javascript中使用正则表达式获取多行文本的最后一行?

谢谢。

4 个答案:

答案 0 :(得分:2)

[\S]+$(对于\S+$来说很长),意味着匹配字符串末尾的所有非空格。

由于您的字符串在最后一行的末尾有一个空格,因此它不匹配任何内容。

即使您删除了该尾随空格,也只会匹配ipsum.

只需使用:.*$

这取决于.默认不匹配换行符的事实(?s)可以在需要时更改

因此它匹配从最后一个换行符到字符串结尾的所有字符。

请参阅regex101.com了解演示。

现在,如果文字在最后一行之后有一个或多个换行符,那么它不是 last 行,请改用.*\s*$。请参阅demo

要在最后不捕获空行,请使用捕获组捕获最后一个非空行:(.*)\s*$。请参阅demo

答案 1 :(得分:1)

我对正则表达不太满意。

但是,要回答这个问题,您可以使用split('\n')

var myText = <your multi line text>;
var lines = myText.split('\n');
console.log(lines[lines.length - 1]); // This should print last line

根据你的JSFiddle,你必须采取倒数第二行,因为最后一行是EMPTY

var x=document.getElementsByTagName('p')[0].innerHTML;
var y = x.split('\n');
alert(y[y.length - 2]);

答案 2 :(得分:0)

使用正则表达式,您可以执行此操作

var text = your text goes here;
var regex = /\n.*$/;
match = regex.exec(text);
console.log(match[0].slice(1));

检查以\n(换行符)开头的匹配项,然后以\n之外的其他内容结束,这将获得最后一行。最后只需从匹配中删除第一个字符,因为它将是起始\n(上一行中的最后一个字符)。

请注意,仅当文本实际上是多行时才会有效 - 包含\n - 因此您也应该先测试它。

if (text.indexOf('\n') == -1) return text;

答案 3 :(得分:0)

如果为空,则应使用(.+)([^\s])忽略最后一行:

对于多段:

var u = document.getElementsByTagName('p');
for (var i = 0; i < u.length; i++) {
  var z = u[i].innerHTML.match(/(.+)([^\s])/g);
  console.log(z[z.length - 1]);
}
<p>
Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante 
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum. 
</p><p>
Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante 
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum. 
</p><p>
Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante 
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum. 
</p><p>
Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante 
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum. 
</p>

单身:

var x=document.getElementsByTagName('p')[0].innerHTML;
var y = x.match(/(.+)([^\s])/g);
console.log(y[y.length -1]);
<p>Lorem ipsum dolor sit amet, 
Praesent libero. Sed cursus ante     
dapibus diam. Sed nisi. Nulla  
imperdiet. Duis sagittis ipsum.   



                               </p>