簡體   English   中英

Javascript:用帶空格分割字符串,除非它用圓括號、單引號或方括號括起來

[英]Javascript: Split string with withespace unless it is enclosed in round brackets, single quotation mark or square bracket

我的方法: https : //regex101.com/r/vyKG1j/1

[\s]+(?!([^[]*])|([^\(]*\)))

不幸的是,這與封裝括號 ex: (ab (cd)) 存在問題,我無法實現撇號搜索。

示例: "ab (a (ab)) [abcd] 'test string' (ab)"
期望結果: ["a", "b", "(a (ab))", "[abcd]", "'test string'", "(ab)"]

如果它也能處理這樣的事情就最好了。

示例: "ab abcd(ab)"
期望結果: ["a", "b", "abcd(ab)"]

正則表達式是最好的方法嗎?

問自己是否可以通過正則表達式解決的問題是 - Can I draw a finite automata (state machine) for this problem 請記住,自動機沒有任何存儲功能。

現在讓我們看看您的示例中具有嵌套結構的子字符串: (a (ab))

您如何為這種情況編寫generic有限自動機? generic我的意思是,自動機如何remember一個左括號出現多少次符合特定模式的匹配右括號?

這就是為什么不能單獨使用just則表達式來解析這個字符串模式的原因。

特別是對於這個問題,因為它非常簡單,我只會遍歷字符串,保留一個堆棧來跟蹤括號和引號字符以自己解析它。

暫無
暫無

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

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