我需要一个 JavaScript 正则表达式来捕获后视后的所有单词

I need a JavaScript RegEx to capture all words after a lookbehind

我真的很想了解 RegEx,我觉得这个问题应该简单明了,但出于某种原因,我真的很难得到我需要的东西。我在这里至少浏览了 20 篇文章,none 篇文章让我明白了。

我需要的是在回顾之后捕获所有单词,以便我可以计算它们。到目前为止,这是我得到的:

正则表达式:/(?<=\> )(\w*)/gi
字符串:"Mon Jan 11 11:00 <ralph> Hello all!!"

捕获"> "之后的所有单词,所以上面我只希望捕获组单独捕获“Hello”和“all”,这样我就可以统计组并得到用户名后面的单词数, 本例中为“”。

上面的 RegEx 正是我目前正在使用的,它当然只是捕获第一个词。我也试过将 * 和 + 放在捕获组之后,但由于某种原因,这会使捕获组无效。

我也试过 (?<=\> )((\w*)(?:\W+))*,虽然这在回溯后确实匹配所有内容,但它只捕获“全部!!”和 2 个不同捕获中的“全部”。我不确定为什么“!!”在任何捕获中返回,因为我只匹配 (?:).

(?<=\> )(.+) 对我来说很好,它从 Mon Jan 11 11:00 <ralph> Hello all!! 捕获 Hello all!! 是你需要的吗?

>之后是有规律的模式还是随机的?

无论如何,这个 (?<=\> )(.*) 符合你的例子。

例如

const str = "Mon Jan 11 11:00 <ralph> Hello all. How are you?";

console.log( str.match(/(?<=\> (?:\w+\W+)*)\w+/g) );

I'm not sure why "!!" is returning in any capture as I have it to match only with (?:).

是的,不过也被第一个捕获组捕获了。例如,如果 "x"((?:x)) 匹配,那么第一个捕获组将包含 "x",即使它也在第二个组 non-capturing.[=15 中=]