正则表达式负先行和单词边界从捕获组中删除第一个字符
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(非单词字符)以匹配 *
,但是字符串中的第一个单词将不匹配,因为前面没有非单词字符。这就是我添加备选方案的原因。
我正在尝试捕获字符串中除 'and' 之外的每个单词。我还想捕获像 *this* 这样被星号包围的词。我主要使用的正则表达式命令有效,但当它捕获带星号的单词时,它会忽略第一个(因此 *this* 只会捕获 this*)。这是我正在使用的正则表达式:
/((?!and\b)\b[\w*]+)/gi
当我删除最后一个单词边界时,它将捕获所有 *this* 但不会遗漏任何 'and' s。
问题是 *
没有被当作单词字符,所以 \b
不匹配它前面的位置。我认为您可以将其替换为:
^(?!and\b)([\w*]+)|((?!and\b)(?<=\W)[\w*]+)
\b 被替换为 \W(非单词字符)以匹配 *
,但是字符串中的第一个单词将不匹配,因为前面没有非单词字符。这就是我添加备选方案的原因。