Php 匹配字符串,该字符串包含以4位正则表达式结尾的特定子字符串

Php 匹配字符串,该字符串包含以4位正则表达式结尾的特定子字符串,php,regex,string,pcre,Php,Regex,String,Pcre,我正在尝试匹配以下类型的字符串: 匹配 -4738 -3333 没有匹配项 -04477474 9495-8485 /2848 /9949 -584888 因此,我创建了这个正则表达式:/^(-)(?=\d{4})$/,但它与我的目标字符串不匹配:-8549 这是我需要分析的数据: 我对regex很陌生,所以欢迎所有关于如何解决这个问题的提示和建议 提前感谢这应该可以: /^(- )?(\d{4})$/ 如果您不需要捕获任何组: /^(?:- )?\d{4}$/ 如果您尝试/^-\s\d{

我正在尝试匹配以下类型的字符串:

匹配
-4738
-3333

没有匹配项
-04477474
9495-8485
/2848
/9949
-584888

因此,我创建了这个正则表达式:
/^(-)(?=\d{4})$/
,但它与我的目标字符串不匹配:
-8549

这是我需要分析的数据:

我对regex很陌生,所以欢迎所有关于如何解决这个问题的提示和建议

提前感谢

这应该可以:

/^(- )?(\d{4})$/
如果您不需要捕获任何组:

/^(?:- )?\d{4}$/

如果您尝试
/^-\s\d{4}$/
,它应该可以做到这一点;)

每个结果后都有换行符吗?没有,但是对正则表达式进行快速编辑可能会有所帮助!您正在搜索的数据来自哪里?它像数据库记录还是文件?因为您提供的用例需要有所不同:如果您想匹配-4738而不是-04477474或9495-8485,那么其中必须有换行符。你能展示几个你必须查看的数据集吗?数据来自数据库。所以我给出的每个例子都是一个单独的记录。希望这有意义:)好吧,让我们看看你有什么:)