【发布时间】:2016-01-16 14:47:24
【问题描述】:
我正在尝试匹配恰好包含 1-4 位数字的字符串,在可选分隔符之后的匹配开头包含或不包含“x”。这是分隔符以防万一:(这部分很好)
[ .\-]*
例如,在
blahblah-123 hahaha
sdsshgs.x7
3343434 093798
这些将被匹配:
123
x7
我已经成功匹配了 1-4 位数字,用这个:
(\b\d{1,4}\b)?
同时,我希望能够匹配以“x”开头的 1-4 位字符串,所以我有这个。
(\bx\d{1,4}\b)?
现在唯一的问题是将它们放在一个正则表达式中。也许一个'|'会有用吗?任何帮助将不胜感激。
【问题讨论】:
-
?表示前一个字符的 0 或 1 个"x?"表示 0 或 1 个字符。 -
试试
[ -\.](x?\d{1,4})\b。 -
@recursive 是的,我有点理解,如果找不到匹配项,代码应该没问题。到目前为止,我认为没有任何问题。编辑:哦,这就是我应该使用它的地方。谢谢!
-
@approxiblue 是的,这可以解决问题。谢谢!
-
@approxiblue 实际上,它并不完全匹配 1-4 位数字。如果它们超过 4,它只会减少它们。我找到了一个解决方案,尽管那里可能有一些更短的东西。 (\bx\d{1,4}\b|\b\d{1,4}\b)?