我想匹配类似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]
而不是)。