[英]Javascript Regex to Split a String by Word Boundary when not in quotes
[英]Javascript regex split a string with new lines when text is surrounded by quotes
我想在引用文本時使用split
字符串方法拆分字符串。 例如,我想要這個字符串:
Some text
"This is what
I want to catch"
Some more text
變成一個字符串數組如:
0: "Some text"
1: "This is what↵I want to catch"
2: "↵↵Some more text"
為此,我呼吁:
inputText.split(/"((.+)|\s)+"/)
這不起作用,因為它創建了數組:
0: "Some text"
1: "I want to catch"
2: "I want to catch"
3: "↵↵Some more text"
知道如何實現我想要的嗎?
我不能使用后視和前瞻,因為我仍然希望引號成為匹配的一部分。 我的目標是在文本被引號包圍時拆分字符串,但數組中沒有引號本身。
根據需要,您可以在split
中使用此正則表達式:
/\n*(?:"([^"\\]*(?:\\.[^"\\]*)*)")?\n+/
正則表達式解釋:
\n*
: 匹配 0+ 換行符(?:
: 啟動非捕獲組
"
: 比賽開場"
(
: 開始捕獲組
[^"\\]*
: 匹配 0+ 任何不是"
和不是\
的字符(?:\\.[^"\\]*)*
:匹配一個轉義字符,后跟 0+ 任何不是"
和不是\
的字符。 重復此組 0 次或多次)
: 結束捕獲組 #1"
: 比賽結束"
)?
:結束非捕獲組。 ?
使該組可選\n+
: 匹配 1+ 換行符代碼:
const s = `Some text "This is what I want to catch" Some more text` var m = s.split(/\n*(?:"([^"\\]*(?:\\.[^"\\]*)*)")?\n+/) console.log(m)
或者,您可以在 Javascript 中使用此正則表達式來匹配允許 escaping 引用的字符串:
/"[^"\\]*(?:\\.[^"\\]*)*"|[^"\n]+/g
正則表達式解釋:
"
: 比賽開場"
[^"\\]*
: 匹配 0+ 任何不是"
和不是\
的字符(?:\\.[^"\\]*)*
:匹配一個轉義字符,后跟 0+ 任何不是"
和不是\
的字符。 重復此組 0 次或多次"
: 比賽結束"
|
: 或者[^"\n]
: 匹配沒有換行符或"
的其他行代碼:
const s = `Some text "This is what I want to catch" Some more text` var m = s.match(/"[^"\\]*(?:\\.[^"\\]*)*"|[^"\n]+/g) console.log(m)
您可以簡單地拆分"
。您還可以截斷前導和尾隨的換行符。
const s = `Some text "This is what I want to catch" Some more text` console.log(s.split('"'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.