0
#\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 个破折号。

有任何想法吗?=/

4

3 回答 3

1

您不需要单个字符的字符类,只需

-{3}

或更简单的

---

会做得很好。

无论如何,您的模式应该可以工作,检查您是否有实际的破折号而不是其他看起来像破折号的字符(如 em 破折号)。

于 2012-08-10T13:53:59.847 回答
0

您的三个破折号的 RegEx 工作正常,在您更大的 RegEx 的其余部分中还有其他内容失败了。

证明:

$x = 'mi---hai';
echo preg_replace('/[\-]{3}/', '', $x); // echoes 'mihai'

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

于 2012-08-10T13:54:35.857 回答
0

哦!我找到了解决方案!\b 导致它,因为 - 不被视为单词字符。哎呀!

于 2012-08-10T14:05:25.707 回答