正则表达式匹配任意长度的数字字符串,其前面可能有也可能没有前面的0x

sam*_*moz 2 regex

我想知道你是否可以帮助我制定一个正则表达式来匹配以下模式?

任意长度的任意数字字符串,可以是0x,也可以不是0x.

Tom*_*lak 7

像这样的东西:

\b(?:0x)?\d+\b
Run Code Online (Sandbox Code Playgroud)

或者,如果"0x"要从匹配中排除可选项:

(?:(?<=\b0x)|\b)\d+\b
Run Code Online (Sandbox Code Playgroud)

前者是:

- a word boundary
- "0x", optional
- decimal digits, at least one
- a word boundary

后者将是:

- choose
  - either a position preceded by
     - a word boundary
     - "0x"
  - or a word boundary
- decimal digits, at least one
- a word boundary

后者匹配:

- 123456
- 0x123456

但不是:

- 0y123456

要匹配十六进制数字(如"0x"所示),请使用[0-9A-Fa-f]代替"\d".