(?<=\s)\d(?=\s)
与表达式不同
(?<!\S)\d(?!\S)
?
答案 0 :(得分:2)
一个区别是,正向后向查找和向前查找要求查找要存在的那些字符,而负向查找则不需要。例如
1 2
将有2个匹配项
(?<!\S)\d(?!\S)
但没有匹配项
(?<=\s)\d(?=\s)
https://regex101.com/r/tjYc1o/1
(?=\s)
要求数字后跟一个空格字符,因此如果该数字位于字符串的末尾,则该数字将不匹配,但是如果使用(?!\S)
,则该负数将不匹配提前行将通过,因为字符串末尾的数字后面没有非空格字符。
答案 1 :(得分:0)
#Why is the expression
(?<= \s )
\d
(?= \s )
#not the same as the expression
(?<! \S )
\d
(?! \S )
当您在否定类上使用否定断言时,它也会匹配
在BOS和EOS位置,而肯定的断言则不会。