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

时间:2015-07-17 15:19:59

标签: regex negative-lookahead word-boundary

我正在尝试捕获字符串中的每个单词,除了'和'。我还想捕捉被* this *等星号包围的单词。我正在使用的正则表达式命令主要起作用,但是当它用星号捕获一个单词时,它将省略第一个单词(因此* * *只会捕获此*)。这是我正在使用的正则表达式:

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

当我删除最后一个单词边界时,它将捕获所有* this *但不会遗漏任何'和#39;第

1 个答案:

答案 0 :(得分:1)

问题是*不被视为单词字符,因此\b与之前的位置不匹配。我想你可以用以下代替它:

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

\ b补充了\ W(非单词字符)以匹配*,然而字符串中的第一个单词将不匹配,因为不在非单词字符之前。这就是我添加替代品的原因。

DEMO