簡體   English   中英

使用Regex分割字串,並使用Javascript中的例外

[英]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.

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