在javascript中使用REGEX拆分刺痛

Split stings using REGEX in javascript

本文关键字:拆分 REGEX javascript      更新时间:2023-09-26

>我正在尝试将字符串解析为 5 个部分。例如:

var str1 = '#<SYSTEM list-of / asdf-finalizers-20140826-git / quicklisp 2014-08-26>'
// filter is used to remove empty strings from the returned array
str1.split(/[ #<>/]/).filter(function(n) { return n !== ''; });
// str1[0] -> SYSTEM
// str1[1] -> list-of
// str1[2] -> asdf-finalizers-20140826-git
// str2[3] -> quicklisp
// str2[3] -> 2014-08-26


但问题是,我无法解析单词中间包含斜杠的字符串例如,

#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>

解析单词的正确正则表达式是什么 asdf-finalizers-test/1 ?我尝试了这些,但失败了。

/[('s'/'s) #<>]//[(?:'s'/'s) #<>]//[ #<>]|('s'/'s)/

以下内容似乎有效:

/ '/ |[ #<>]/
'#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>'.split(/ '/ |[ #<>]/).filter(Boolean)
> [ 'SYSTEM',
    'asdf-finalizers-test/1',
    'asdf-finalizers-20140826-git',
    'quicklisp',
    '2014-08-26' ]

您可以使用负前瞻,以便在后跟单词字符时不根据/进行拆分。

> var s = "#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>"
> s.split(/[ #<>]|'/(?!'w)/).filter(function(n) { return n !== ''; });
[ 'SYSTEM',
  'asdf-finalizers-test/1',
  'asdf-finalizers-20140826-git',
  'quicklisp',
  '2014-08-26' ]