RegExp:与可选的包装文本匹配

时间:2015-08-19 03:29:45

标签: javascript regex

考虑字符串hello/pls/friend。我可以使用RegExp /\w+/g捕获这些单词,从而生成['hello', 'pls', 'friend']

现在考虑字符串(hello)/pls/friend。我现在不仅对这些单词感兴趣,而且还对每个单词是否都包含在括号内感兴趣。

我提出的一个解决方案是复制'我的原始表达式,添加了第二个带有(转义)括号的版本。说... /(\(\w+\))|(\w+)/g

我宁愿不复制原始表达,所以我想知道是否有更简洁的方法来解决这个问题。

目标/要求是:

  1. 这与String.prototype.replace()一起使用并指定了回调,因此如果它对您有用,请记住这一点。

  2. 经过一些光线操作后,应该可以生成如下对象:

    [
      { word: "hello", wrapped: true },
      { word: "pls", wrapped: false },
      { word: "friend", wrapped: false } 
    ]
    
  3. 不匹配的括号,即(hello/pls,不应匹配。

  4. 这些是JavaScript RegExps,因此请牢记这些限制

  5. 它不需要处理多个包装的单词,例如(hello/pls)/friend

  6. 感谢您花时间阅读这篇文章,RegExp专业人士!

1 个答案:

答案 0 :(得分:1)

\(([^/)]*)\)|[^/)(]*

您可以使用此。所有匹配项都会在wrapped=False下。所有捕获的组都应在wrapped = True下。

参见演示。

https://regex101.com/r/uF4oY4/85