我有一个正则表达式来列出输入到我的应用程序中的搜索中的主题标签,如下所示:
text.match(/#[a-z]+/gi);
和一个正则表达式来列出搜索中的所有单词
text.match(/\S+\s*/g);
我想要做的是将主题标签和单词拆分为两个单独的列表,因此我希望能够更新第二个正则表达式,以便它忽略主题标签。我将如何实现这一点?
例如,如果输入是:
“你好,这是今天的#my #question”
预期的输出应该是 2 个数组:
[Hello, this, is, for, today],
[my, question]
如果可能的话,我还想让主题标签正则表达式返回没有主题标签的单词,否则如果不可能的话,我可以稍后将数组中的单词字符串拆分
最佳答案
您可以通过消极和积极的回顾来做到这一点。显然,负面回顾将匹配没有您的“哈希标签”的作品,而正面回顾将匹配带有它们的作品。
Negative LookBehind 以匹配您的正常搜索词
/\b(?<!#)[^#\s]+/g
-
\b
确保您看到的是单词的开头 -
(?<!)
是消极的回头看。防止#
的匹配
Regex101 Example
Positive LookBehind 以匹配您的“散列”字词
/(?<=#)\w+/g
-
(?<=)
是正后视,如果#
则允许匹配在\w+
后面找到
Regex101 Example
关于javascript - 使用 Regex 拆分主题标签和搜索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56387192/