如何在保留带引号的字符串的同时分割这一行
>div#a.more.style.ui[url="in.tray"]{value}
分割的字符在哪里
>
#
.
[
{
产生:
>div
#a
.more
.style
.ui
[url="in.tray"]
{value}
目前的努力是:
\>|\[|\{|#|\.?(?:(["'])(?:\\?.)*?\1)*
with "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}$$$
目前的努力基于@蒂姆-皮茨克 https://stackoverflow.com/users/20670/tim-pietzcker using .match()
但最后一个空匹配被过滤掉:
[a-z$^+*>#.[{]{0,1}(?:"[^"]*"|[^"$^+*>#.[{]){0,}
不要使用split()
,那么就很简单了:
result = subject.match(/[>#.[{](?:"[^"]*"|[^">#.[{])+/g);
See it 住在 regex101.com http://regex101.com/r/aT3cS4.
解释:
[>#.[{] # 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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)