#\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
我试图在一组非常可变的数据上进行匹配,我不能在我的生活中确定如何匹配三个短划线的字符串。
有问题的正则表达式是
[\-]{3}
我已经尝试了一百种组合让它发挥作用,但它并没有为我提供3个破折号。
有什么想法吗? = /
答案 0 :(得分:1)
您不需要单个字符的字符类,只需
-{3}
或更简单的
---
会好起来的。
你的模式无论如何都应该有效,检查你是否有实际破折号,而不是其他字符看起来像像破折号(如em破折号)。
答案 1 :(得分:0)
你的三个破折号的RegEx工作正常,你的更大的RegEx的其余部分还有其他东西失败了。
证明:
$x = 'mi---hai';
echo preg_replace('/[\-]{3}/', '', $x); // echoes 'mihai'
顺便说一句,如果你想要匹配破折号并且在角色类中没有其他字符,那么你不需要逃避它。 [-]{3}
可以正常工作,[-abc]
将匹配a,b,c或破折号。
答案 2 :(得分:0)
噢!我找到了解决方案! \ b导致它,因为 - 不被视为单词字符。糟糕!