尝试匹配除星号包含之外的单词。以下是我的代码:
(?<!\*)\b(word)\b(?!\*)
问题是它不能像应该的那样匹配*word
或word*
,因为我想匹配除*word*
之外的所有排列组合。(?<!\*)\b(word)\b(?!\*)
问题是它不能像应该的那样匹配*word
或word*
,因为我想匹配除*word*
之外的所有排列组合。请尝试以下解决方案,它可以匹配任何单词,而不仅仅是 "word":
(?<!\*)\b\w+\b|\b\w+\b(?!\*)
(?<!\*)\bword\b|\bword\b(?!\*)
请查看Regexr。
你的问题在于,只要一个断言为真,整个正则表达式就会失败。我的方法允许在一侧使用*
,但当两侧都使用*
时会失败。
一些娱乐内容:
(?(?<=\*)word(?!\*)|word(?=\*))
解释:
(? # if
(?<=\*) # there is * before
word(?!\*) # then match word not followed by *
| # else
word(?=\*) # match word followed by *
) # end if