正则表达式匹配一个数字和8个字符的空格

时间:2012-07-31 22:59:11

标签: java regex

我想匹配一个包含

的字符串

空格

任意数量的数字

空格

1-8个字符 - (字母数字和特殊字符)

例如,

 01 Stack   

这是我试过的,

\\s\\d+\\s[^.]{1, 8} - i tried here except for ., 

3 个答案:

答案 0 :(得分:2)

试试\\s\\d+\\s[^.]{1,8}?看起来这里唯一的问题是多余的空间。

此外,\\S适用于除空格之外的所有内容。 [^ ]适用于一切空间。 .适用于所有事情。

答案 1 :(得分:2)

尝试这一点,捕获(并限制)标点符号和字母数字:\s\d+\s[\p{Punct}\p{Alnum}]{1,8};如果你想要开始/结束行锚点,请将它全部包装在^...$中。

如果“任意位数”表示1位或更多位数,则上述模式正常。如果它表示“零或更多数字”,则\d+需要变为\d*

顺便说一下,模式[^.]将匹配任何不是句号的东西。我认为它包含了太多,并且排除了太多。所以我选择了更具体的模式[\p{Punct}\p{Alnum}]

请参阅documentation here

答案 2 :(得分:-1)

我不理解[^.]的用法。角色.匹配“任何角色”。所以你要求它匹配“任何字符除了任何字符”。相反,您应该将非空格字符与\\S匹配。