我想匹配类似19740103-0379或197401030379的字符串,即连字符是可选的。
如何使用regexp完成此操作?

最佳答案

通常,您只能使用-?。另外,您可以使用-{0,1},但是应该发现几乎所有地方都支持?表示“零或一次出现”。

pax> echo 19740103-0379 | egrep '19740103\-?0379'
19740103-0379

pax> echo 197401030379 | egrep '19740103\-?0379'
197401030379


如果要在任何地方接受带有任意破折号的12位数字,则可能需要执行以下操作:

-*([0-9]-*){12}


它基本上是零个或多个破折号,后跟12次出现(一个数字后跟零个或多个破折号),并将捕获各种奇妙的事物,例如:

--3-53453---34-4534---


(当然,如果您的正则表达式引擎支持\d,则应使用[0-9]而不是)。

09-26 21:39