在java正则表达式中捕获组

pur*_*uru 0 java regex

我正在研究java正则表达式,但根据一些例子,我发现像下面这样的组正在混淆.所以任何人都可以说明正则表达式,

(?<!\d) and (?!\d)
Run Code Online (Sandbox Code Playgroud)

我明白了:

\d for digit
? for one or zero
! for not
Run Code Online (Sandbox Code Playgroud)

上述群体的意思是什么?请帮忙!

提前致谢.

Boh*_*ian 5

表达(?<!\d)(?!\d)是一个"负落后面貌"和"负向前看".它们是负的,零宽度的断言,而不是捕获组.

表达式(?<!\d)断言前一个字符不是数字.
表达式(?!\d)断言下一个字符不是数字.

虽然它们看起来像组,但这只是使用括号的语法.

顺便说一句,他们可以表示为正面看变通(?<=^|\D)(?=\D|$)