[英]Splitting string with Regex with exceptions in Javascript
一直試圖用[space]分割字符串,但javascript中有一些例外,但僅獲得部分成功。
串:
Surname, Name (description) Category1 Surename, Name Category2 "Category3" " Cate gory4", category5 (category1)
想要的輸出:
- Surname, Name (description)
- Category1
- Surename, Name
- Category2
- "Category3"
- " Cate gory4"
- category5 (category1)
正則表達式
\s+(?=([^"]*"[^"]*")*[^"]*$)(?=[^()]*(?:\(|$))(?=[^(])
臨時輸出
- Surname,
- Name (description)
- Category1
- Category2
- "Category3"
- " Cate gory4",
- category5 (category1)
我找不到為“,”設置例外的方法。
有解決這個問題的想法嗎?
編輯:在字符串和輸出中添加了替代字符串。
最好的問候理查德
您可以基於交替使用此正則表達式:
var str = 'Surname, Name (description) Category1 Surename, Name Category2 "Category3" " Cate gory4", category5 (category1)'; var m = str.match(/\\b\\w+ *, *\\w+\\b(?!\\s*\\()|\\b\\w[\\w,\\s]*\\([^)]+\\)|"[^"]*"|\\b\\S+/g); console.log(m);
正則表達式分解:
\\b\\w+ *, *\\w+\\b(?!\\s*\\()
-匹配以逗號分隔的名稱,后面沒有(...)
\\b\\w[\\w,\\s]*\\([^)]+\\)
-匹配一些文本,后跟(...)
OR "[^"]*"
-匹配引用的字符串 \\b\\S+
-匹配1個或更多非空格文本 輸出:
[
"Surname, Name (description)",
"Category1",
"Surename, Name",
"Category2",
"\"Category3\"",
"\" Cate gory4\"",
"category5 (category1)"
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.