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

Java 与空格a数字和8个字符匹配的正则表达式,java,regex,Java,Regex,我想匹配一个包含 空间 任意位数 空间 1-8个字符-(字母数字和特殊字符) 例如 01 Stack 这就是我试过的 \\s\\d+\\s[^.]{1, 8} - i tried here except for ., 试试\\s\\d+\\s[^.]{1,8}?看起来这里唯一的问题是多余的空间 另外,\\S用于除空格以外的所有内容[^]适用于空间之外的所有内容适用于一切。我不明白[^.]的用法。字符与“任意字符”匹配。因此,您要求它匹配“除任何字符外的任何字符”。相反,您应该将非空

我想匹配一个包含

空间

任意位数

空间

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

例如

 01 Stack   
这就是我试过的

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

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


另外,
\\S
用于除空格以外的所有内容<代码>[^]适用于空间之外的所有内容<代码>适用于一切。

我不明白
[^.]
的用法。字符
与“任意字符”匹配。因此,您要求它匹配“除任何字符外的任何字符”。相反,您应该将非空格字符与
\\S

进行匹配,尝试捕捉(并限制)标点符号和字母数字:
\S\d+\S[\p{Punct}\p{Alnum}]{1,8}
;如果需要开始/结束线定位,请将其全部包装在
^…$

如果“任意位数”表示1个或多个数字,则上述模式可以。如果它表示“零位或多位”,则
\d+
需要变成
\d*

另一方面,模式
[^.]
将匹配任何非句点的内容。我认为,它包含了太多的内容,排除了太多的内容。所以我选择了更具体的模式
[\p{Punct}\p{Alnum}]


请参阅。

问题出在哪里?是否可以包含除“.”之外的所有字符。
\S
用于除空格以外的所有字符
[^]
表示除空格以外的所有字符。特殊字符是什么?尝试此正则表达式时会发生什么情况?否。
[]
中表示点。
[^.]
匹配除句点以外的所有字符。因为
[]
里面,所以它没有保留它的典型含义。哦,天哪,我想我还需要一杯咖啡!=)Downvoter,请添加评论指出您的原因,以便我可以改进我的答案。做得好。我从来没有在regex里看起来很拘谨。打印也可以