[英]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
之前的模式更改為n2
或ntext
,這將不起作用。
任何幫助表示贊賞。
你可以使用這個正則表達式:
/(?<=\\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((?:[^\\"]+|\\.)*)"/
(?<=\\n)
查找后跟字母n
的\
。(\d+)
捕獲 1 個或多個數字。\\n
匹配文字\
后跟字母n
。(...*)
匹配一些重復 0 次或更多次的文本。(?:...|...)
匹配既不是文字\
字符也不是雙引號字符的任何字符...或后面跟着 "anything" 的文字\
字符,所以你可以有\n
或\"
等等。整個組被重復匹配。"
最后確保您在同一行的雙引號字符串中(好吧,我們希望如此)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.