簡體   English   中英

正則表達式從后面匹配字符串

[英]Regex to match string from the back

假設我們有一個字符串"text\t1\nText that has to be extracted"可以使用什么正則表達式,以便我們檢查從最后一個"n的字符串,因為字符串的開頭可以更改。在在這種情況下,我只需要獲取Text that has to be extracted 。我們可以在這里使用什么通用正則表達式?

我使用了這個(?<=\\n1\\n)(.*)(?=“)但如果n之前的模式更改為n2ntext ,這將不起作用。

任何幫助表示贊賞。

你可以使用這個正則表達式:

/(?<=\\n)[^"\\]+(?="$)/

正則表達式演示

正則表達式詳細信息:

  • (?<=\\n) :向后看以確保我們在當前 position 之前有一個\n
  • [^"\\]+ : 匹配任何不是"和不是\的字符的 1+
  • (?="$) : 確保我們在行結束前有一個"

你不能只拆分並取最后一個元素嗎?

 var item = "text\n1\nText that has to be extracted"; var last = item.split(/\n/g).reverse()[0]; console.log(last) // "Text that has to be extracted"

/^(\d+)\n([^\n"]+)"$/可能有一些邊緣情況,但會找到數字(一位或多位),后跟換行符,后跟任何既不是換行符也不是雙引號,后跟文字雙引號。

這將要求雙引號緊接在行尾 (EOL) 之前出現,但如果不需要(例如,如果在右引號后有分號),請從末尾刪除$

編輯

剛剛注意到它是文字文本\n而不是換行符。

/(?<=\\n)(\d+)\\n((?:[^\\"]+|\\.)*)"/

正則表達式 101 示例

分解:

  • (?<=\\n)查找后跟字母n\
  • (\d+)捕獲 1 個或多個數字。
  • \\n匹配文字\后跟字母n
  • (...*)匹配一些重復 0 次或更多次的文本。
  • (?:...|...)匹配既不是文字\字符也不是雙引號字符的任何字符...或后面跟着 "anything" 的文字\字符,所以你可以有\n\"等等。整個組被重復匹配。
  • "最后確保您在同一行的雙引號字符串中(好吧,我們希望如此)。

暫無
暫無

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

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