我想写一个正则表达式,这样我只匹配没有方括号括起来的第一个数字.
例如asdadsas,*&(*&(*2asdasd*U(*&*()&(*3
应该匹配2(没有方括号)
并且asdadsas,*&(*&(*[2]asdasd*U(*&*()&(*3
应该匹配3
我到目前为止的正则表达式是: (?<!\[)[0-9](?!\])
但是,我遇到的问题是[2
仍然应该匹配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 ,我们可能会失败]
。
归档时间: |
|
查看次数: |
126 次 |
最近记录: |