正则表达式的环视技术

4
尝试匹配除星号包含之外的单词。以下是我的代码: (?<!\*)\b(word)\b(?!\*) 问题是它不能像应该的那样匹配*wordword*,因为我想匹配除*word*之外的所有排列组合。
3个回答

3

请尝试以下解决方案,它可以匹配任何单词,而不仅仅是 "word":

(?<!\*)\b\w+\b|\b\w+\b(?!\*)

重点是要寻找出现星号的两种情况,即在单词开头或者结尾处。

2
那么你需要进行替代。
(?<!\*)\bword\b|\bword\b(?!\*)

请查看Regexr

你的问题在于,只要一个断言为真,整个正则表达式就会失败。我的方法允许在一侧使用*,但当两侧都使用*时会失败。


1

一些娱乐内容:
(?(?<=\*)word(?!\*)|word(?=\*))

解释:

(?                      # if
    (?<=\*)             # there is * before 
        word(?!\*)      # then match word not followed by *
        |               # else
        word(?=\*)      # match word followed by *
)                       # end if

在线演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接