【问题标题】:regex match sub-string before sequence of numbers正则表达式匹配数字序列之前的子字符串
【发布时间】:2018-08-26 18:25:45
【问题描述】:

我只想在 4 个数字之前获得 - 和之后的空格。我制作了以下正则表达式来尝试匹配这些字符。 ^(- )+?(?=\d{4})$
如果我在下面的数字字符串上尝试这个正则表达式,我不会得到任何匹配。
- 7575

我做错了什么?
我对正则表达式很陌生。

提前致谢。

【问题讨论】:

  • ?= 是一个积极的展望,但与里面的内容不匹配,试着把 de $^(- )+?(\d{4}$) 一样放在里面
  • 你为什么使用这个:(- )+??你知道那是什么意思吗?你想匹配- - - - - 1234(连字符和空格交替出现多次)?您可以发布一小部分示例输入和您的预期输出吗? (是的,我看到您已经接受了答案)

标签: php regex string pcre


【解决方案1】:

你的正则表达式的实际作用是:
^(- )+? => 匹配-的序列
后面必须跟 4 位数字 (?=\d{4}) 不匹配
然后结束句$
所以这是不可能的。
你要么,如果你不想匹配数字,必须把结尾放在积极的前瞻中,比如
^(- )+?(?=\d{4}$)
或者像
^(- )+?\d{4}$

这样去掉积极的前瞻

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多