正则表达式负先行和单词边界从捕获组中删除第一个字符

Regex negative lookahead and word boundary removes first character from capture group

我正在尝试捕获字符串中除 'and' 之外的每个单词。我还想捕获像 *this* 这样被星号包围的词。我主要使用的正则表达式命令有效,但当它捕获带星号的单词时,它会忽略第一个(因此 *this* 只会捕获 this*)。这是我正在使用的正则表达式:

/((?!and\b)\b[\w*]+)/gi

当我删除最后一个单词边界时,它将捕获所有 *this* 但不会遗漏任何 'and' s。

问题是 * 没有被当作单词字符,所以 \b 不匹配它前面的位置。我认为您可以将其替换为:

^(?!and\b)([\w*]+)|((?!and\b)(?<=\W)[\w*]+)

\b 被替换为 \W(非单词字符)以匹配 *,但是字符串中的第一个单词将不匹配,因为前面没有非单词字符。这就是我添加备选方案的原因。

DEMO