簡體   English   中英

如何獲得帶有匹配正則表達式的多行文本的最后一行?

[英]How to get last line of multiline text with matching regex?

我現在正在尋找幾個小時如何獲取多行文本的最后一行。

例如:

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中使用正則表達式獲取多行文本的最后一行?

謝謝。

我對Regex不好。

但是,要回答這個問題,您可以使用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]);

[\\S]+$ (對於\\S+$來說很長),表示匹配字符串末尾的所有非空格。

由於您的字符串在最后一行的末尾有一個空格,因此不匹配任何內容。

即使您刪除了該尾隨空格,它也只會匹配ipsum.

只需使用: .*$

這取決於事實. 默認情況下不匹配換行符(?s)可以在需要時進行更改)

因此,它將匹配從最后一個換行符到字符串結尾的所有字符。

有關示例 ,請參見regex101.com


現在,如果文本在最后一行之后有一個或多個換行符,那么它實際上並不是最后一行,請改用.*\\s*$ 參見演示

若要不捕獲末尾的空行,請使用捕獲組捕獲最后一個非空行: (.*)\\s*$ 參見演示

使用正則表達式,您可以執行此操作

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;

如果為空,則應使用(.+)([^\\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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM