考虑字符串hello/pls/friend
。我可以使用RegExp /\w+/g
捕获这些单词,从而生成['hello', 'pls', 'friend']
。
现在考虑字符串(hello)/pls/friend
。我现在不仅对这些单词感兴趣,而且还对每个单词是否都包含在括号内感兴趣。
我提出的一个解决方案是复制'我的原始表达式,添加了第二个带有(转义)括号的版本。说... /(\(\w+\))|(\w+)/g
我宁愿不复制原始表达,所以我想知道是否有更简洁的方法来解决这个问题。
目标/要求是:
这与String.prototype.replace()
一起使用并指定了回调,因此如果它对您有用,请记住这一点。
经过一些光线操作后,应该可以生成如下对象:
[
{ word: "hello", wrapped: true },
{ word: "pls", wrapped: false },
{ word: "friend", wrapped: false }
]
不匹配的括号,即(hello/pls
,不应匹配。
这些是JavaScript RegExps,因此请牢记这些限制
它不需要处理多个包装的单词,例如(hello/pls)/friend
。
感谢您花时间阅读这篇文章,RegExp专业人士!
答案 0 :(得分:1)
\(([^/)]*)\)|[^/)(]*
您可以使用此。所有匹配项都会在wrapped=False
下。所有捕获的组都应在wrapped = True
下。
参见演示。