Php “匹配”---&引用;预赛

Php “匹配”---&引用;预赛,php,regex,preg-match-all,Php,Regex,Preg Match All,我想在一组非常。。。变量数据,我一生都无法确定如何匹配三段式字符串 所讨论的正则表达式是 #\b^([0-9]{7,8}(\s/[0-9]{4})?|Charges|[\-]{3}|UNIVERSAL\sCONNECTIVITY-DCS|FEDERAL\sREGULATORY\sFEE-DCS|PROPERTY\sTAX\sALLOTMENT-DCS|ADMINISTRATIVE\sEXPENSE\sFEE-DCS)\b#m 在其中,我尝试了100种组合,以使其工作,但它从来没有匹配我的3破折

我想在一组非常。。。变量数据,我一生都无法确定如何匹配三段式字符串

所讨论的正则表达式是

#\b^([0-9]{7,8}(\s/[0-9]{4})?|Charges|[\-]{3}|UNIVERSAL\sCONNECTIVITY-DCS|FEDERAL\sREGULATORY\sFEE-DCS|PROPERTY\sTAX\sALLOTMENT-DCS|ADMINISTRATIVE\sEXPENSE\sFEE-DCS)\b#m
在其中,我尝试了100种组合,以使其工作,但它从来没有匹配我的3破折号


有什么想法吗=/

对于单个字符,不需要字符类,只要

[\-]{3}
还是更简单的

-{3}
好的


不管怎样,你的模式应该可以工作,检查你是否有实际的破折号,而不是其他看起来像破折号的字符(比如em破折号)。

你的三个破折号的正则表达式工作正常,在你的大正则表达式的其余部分还有其他一些地方失败了

证明:

---

顺便说一句,如果您试图匹配破折号,并且字符类中没有其他字符在破折号之前,那么您不需要转义它<代码>[-]{3}也可以正常工作,而且
[-abc]
将匹配a、b、c或破折号。

Ooh!我找到了解决办法!原因是\b,因为-不被视为单词字符。哎呀

这对我也有用。发布您的代码,可能它与PHP有关,而不是您的正则表达式。如果(strrpos($mystring,“--”)>=0{//bingo}哦,这可能是另一种解决方案!我找到了解决办法!是b造成的。
\b^([0-9]{6,8}(\s/[0-9]{4})|费用|--|通用连接跟单信用证|联邦监管跟单信用证|财产跟单信用证|管理跟单信用证|\b
就是我在做的:
991305/0992
991305/1000
992034/0771
992034/1000
费用
费用
仍然不匹配我会接受你的答案,因为你引导我找到了正确的答案——问题是词的边界
$x = 'mi---hai';
echo preg_replace('/[\-]{3}/', '', $x); // echoes 'mihai'