javascript - 正则表达式 : match with optional wrapping text

标签 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 正则表达式,因此请牢记这些限制

  5. 不需要处理(hello/pls)/friend等多个换行词。

感谢您花时间阅读本文,RegExp 专业人士!

最佳答案

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

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

查看演示。

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

关于javascript - 正则表达式 : match with optional wrapping text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086053/

相关文章:

c# - 如何在不匹配其他字符的情况下正确匹配 C# 中的单词分隔符

python - 如何从Python集合中有效地循环正则表达式搜索

java - 在 java 中将 "aa"与 "aaaa"匹配会返回 2——我希望它是 3

javascript - 当属性过时时如何处理 semver

Javascript 函数调用未执行

regex - 前瞻正则表达式 - 识别重复的连续字母

c# - 正则表达式从字符串中删除所有特殊字符?

javascript - 无法从 websocket 消息对象获取 json 值

javascript - 使用java脚本将数组转换为矩阵的最简单方法

javascript - 查看是否有任何转换正在进行