如何在保留引用字符串的同时分割这一行
>div#a.more.style.ui[url="in.tray"]{value}
拆分的字符在哪里
>
#
.
[
{
产生:
>div
#a
.more
.style
.ui
[url="in.tray"]
{value}
目前的努力是:
\>|\[|\{|#|\.?(?:(["'])(?:\\?.)*?\1)*
"in.tray"
被拆分。
更新 1:
解决方案需要基于正则表达式,因为模式是从现有代码中的 JS 对象的键组装而成的,它们是:
JSObject
'>': function ...
'^': function ...
'[': function ...
...
使用回调函数来处理正则表达式的输出。
目标字符串是一个 Emmet 宏,可能包含以纯字符开头,以及可能重复的至少 ^
、$
被视为单独的元素,例如:
p>div>div>span^h2^^h1>div#a.li^mo+re.st*yle.ui[url="in.tray"]{value}$$$
当前工作基于 @tim-pietzcker使用 .match()
但过滤掉最后一个空的匹配项:
[a-z$^+*>#.[{]{0,1}(?:"[^"]*"|[^"$^+*>#.[{]){0 ,}
最佳答案
不要使用split()
,那很简单:
result = subject.match(/[>#.[{](?:"[^"]*"|[^">#.[{])+/g);
解释:
[>#.[{] # Match a "splitting" character
(?: # Start of group to match either...
"[^"]*" # a quoted string
| # or
[^">#.[{] # any character except quotes and "splitting" characters
)+ # Repeat at least once.
关于javascript - 正则表达式在引号外的特定字符上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22503197/