Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,Regex-我需要获取括号中包含的字符串的每个部分_Javascript_Regex - Fatal编程技术网

Javascript,Regex-我需要获取括号中包含的字符串的每个部分

Javascript,Regex-我需要获取括号中包含的字符串的每个部分,javascript,regex,Javascript,Regex,以下是我所需要的,我想一定是正确的顺序: 需要提取并存储方括号中包含的字符串的每个部分的内容(每个部分必须紧跟在原始字符串的其余部分之后),并且返回原始字符串时不带这些内容 如果在给定的提取节的开头有一个可识别的字符串,后跟一个冒号,那么我需要识别并删除该字符串 对于剩下的内容(逗号分隔),我需要将其转储到数组中 不要试图分析嵌套的括号 做这件事的好方法是什么 编辑:下面是一个字符串示例: 您好,我是一个字符串[this:is,how][it:works,但是,可能有][括号、部分、不带冒号][

以下是我所需要的,我想一定是正确的顺序:

  • 需要提取并存储方括号中包含的字符串的每个部分的内容(每个部分必须紧跟在原始字符串的其余部分之后),并且返回原始字符串时不带这些内容
  • 如果在给定的提取节的开头有一个可识别的字符串,后跟一个冒号,那么我需要识别并删除该字符串
  • 对于剩下的内容(逗号分隔),我需要将其转储到数组中
  • 不要试图分析嵌套的括号
  • 做这件事的好方法是什么

    编辑:下面是一个字符串示例:

    您好,我是一个字符串[this:is,how][it:works,但是,可能有][括号、部分、不带冒号][[应该忽略嵌套部分?]]

    编辑:以下是可能的结果:

    >> results =
      [["this", [" is", " how"]],
       ["it", [" works", " but", " there"]],
       ["", ["might be bracket", " parts", " without", " colons "]],
       ["", ["nested sections should be ignored?"]]
      ]
    
    >> s = "hi, i'm a string     "
    
    提取后:“嗨,我是字符串”

    标识为“this”的数组:[“is”,“how']

    标识为“it”的数组:[works',but',there']

    无标签标识的数组:['may by bracket','parts','without','colon']

    未使用标签标识的数组:[]

    给出了结果:

    >> results =
      [["this", [" is", " how"]],
       ["it", [" works", " but", " there"]],
       ["", ["might be bracket", " parts", " without", " colons "]],
       ["", ["nested sections should be ignored?"]]
      ]
    
    >> s = "hi, i'm a string     "
    

    注意,它在标记之间留有空格。此外,您还可以通过调用
    s=s.replace(/\[\[.\]\]]/g',)在早期阶段删除
    [[[]]
    令牌-此代码将它们捕获为一个普通组。

    您能给出一个示例字符串和相应的结果吗?一个简短的说明-您可能正在尝试解析嵌套的括号。如果您有
    [token:val1,[ignore]val2]
    ,该怎么办?即使在你的例子中,嵌套的标记也会引起一些麻烦。编辑:嗯,我想如果有任何嵌套的标记,那么可能不应该解析整个集合。这是一个选项吗?您可以很容易地从它们中进行检查,搜索
    \\[^\\]]*\\[
    。这是否只在[[和]]的情况下进行检查?或者这也适用于您的示例?是的,您需要使用正则表达式,如
    。split(/\s*,\s*/)
    。字符串的工作方式不同,并且
    split
    中不需要
    /g
    (但也不是
    :)
    )啊,/\s*,\s*/。我还不完全清楚/g到底做了什么。
    /g
    是全局性的。当你在没有
    /g
    的情况下
    匹配
    时,它只会找到第一个匹配,这在大多数情况下是不可取的。
    拆分
    不管有没有它,都能像预期的那样工作。虽然这样工作,但它给你留下了一个看似“笨拙”的问题结果。就我个人而言,我更喜欢使用类似于
    str.split(/\s+(?=\[+)/);
    )的方法将字符串分成几个部分,然后迭代结果。@Andy-我同意,这样可以写得更清楚。对于更多的边缘情况,这将是唯一的选择。