我想匹配一个包含的字符串,
空间
任意位数
空间
1-8 个字符 - (字母数字和特殊字符)
例子,
01 Stack
这是我试过的,
\\s\\d+\\s[^.]{1, 8} - i tried here except for .,
试试\\s\\d+\\s[^.]{1,8}
?看起来这里唯一的问题是多余的空间。
此外,\\S
适用于除空格之外的所有内容。[^ ]
适用于除空间外的所有内容。.
是为一切。
试试这个,捕捉(并限制)标点符号和字母数字\s\d+\s[\p{Punct}\p{Alnum}]{1,8}
:^...$
如果您想要开始/结束线锚点,请将其全部包裹起来。
如果“任意位数”表示 1 个或多个数字,那么上面的模式就可以了。如果它的意思是“零个或多个数字”,那么\d+
需要变成\d*
.
顺便说一句,该模式[^.]
将匹配任何不是句点的内容。我认为它包含了太多,而排除了太多。所以我选择了更具体的模式[\p{Punct}\p{Alnum}]
。
请参阅此处的文档。
我不明白[^.]
. 该字符.
匹配“任何字符”。所以你要求它匹配“除任何字符之外的任何字符”。相反,您应该将非空格字符与\\S
.