正则表达式识别数字,除非被"[""]括起来

Mar*_*nkt 6 regex

我想写一个正则表达式,这样我只匹配没有方括号括起来的第一个数字.

例如asdadsas,*&(*&(*2asdasd*U(*&*()&(*3应该匹配2(没有方括号)

并且asdadsas,*&(*&(*[2]asdasd*U(*&*()&(*3应该匹配3

我到目前为止的正则表达式是: (?<!\[)[0-9](?!\])

但是,我遇到的问题是[2仍然应该匹配2.

我只想跳过这个数字,如果它有一个[左边和一个]右边.

我不知道如何(或者甚至可能)在正则表达式中实现这种条件逻辑.

And*_*ark 2

以下应该有效:

[0-9](?!(?<=\[.)\])
Run Code Online (Sandbox Code Playgroud)

示例: http: //rubular.com/r/0vKy8hyMy0

说明:[0-9]匹配一个数字,(?!(?<=\[.)\])强制要求该数字之前和之后的字符分别不是[]。为了解决这个问题,请考虑以下正则表达式:

(?<=\[.)\]
Run Code Online (Sandbox Code Playgroud)

这可以理解为“匹配 a,]但前提是两个位置前的字符是 a [”。通过在匹配数字后立即将其放入负向前查找中,如果两个位置前的字符是 a[并且下一个字符是 a ,我们可能会失败]