gpt4 book ai didi

javascript - 从空格(逗号)分隔的字符串中提取单词

转载 作者:行者123 更新时间:2023-11-29 15:10:15 27 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来提取由空格分隔的单词(可选逗号 + 空格),从单词中删除“堆栈”前缀(如果有的话)。我正在尝试找到一个纯正则表达式解决方案,而无需对结果进行任何后处理或类似(如果可能)。请看下面的尝试:

输入:

var x = "stackoverflow aa bbb, ccc"

正则表达式:

var rx = /((?:\s)?(?:stack)?(\w+))+/

预期输出:

var match = x.match(rx);
["stackoverflow aa bbb ccc", "overflow", "aa", "bbb", "ccc"]

实际输出:

["stackoverflow aa bbb ccc", " ccc", "ccc"]

最佳答案

match() 输出中获得上述相同结果的一种方法是使用正向回顾。但在 ECMA2018 之前,JavaScript 中不存在后视,据我所知,Google Chrome 是唯一将此功能实现到其 JavaScript 引擎 (V8) 中的浏览器。

这怎么实现的?我们需要两个路径来匹配单词:一个应该匹配 stack 之后的子字符串,另一个应该匹配所有单词但确保它们不以 stack 开头:

/(?<=\bstack)\w+|\b(?!stack)\w+/

如果空格和逗号是必需的,请将它们考虑在内:

/(?:(?<=\bstack)\w+|\b(?!stack)\w+)(?=[, ]|$)/

JS代码:

var str = "stackoverflow aa bbb, ccc"
console.log(str.match(/(?:(?<=\bstack)\w+|\b(?!stack)\w+)(?=[, ]|$)/g))

另一种方法是拆分不需要的部分,但需要对当前要求进行更多说明,因为它现在可能包含的不仅仅是单词:

var str = "stackoverflow aa bbb, ccc"
console.log(str.split(/\bstack|[, ]+/))

关于javascript - 从空格(逗号)分隔的字符串中提取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55250729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com