正则表达式,如何识别由空格分隔的 2 或 3 个单词(任何非空格)



我正在使用java,并正在尝试编写一个正则表达式,除了这个:

jkdsl;a asdfasdf asdfjkl;

而这个

789u 13789u

但不是这个

HJKs9

或者这个

hiop hiopwer rewk3 fheio2
到目前为止,我

有这个,但它似乎不起作用(我使用了在线正则表达式测试器):

(S+s){2,3}

我认为:

  • \S+ 表示多个非空格

  • \s 表示空格

  • (X){2,3} 表示 X 连续出现 2-3 次(含)

我哪里做错了?

(我已经把它放在java中,因为\是一个转义"(\S+\s){2,3}"

匹配包含两个或三个单词的行。

^S+(?:s+S+){1,2}$

Java 正则表达式将是,

^\S+(?:\s+\S+){1,2}$

S+匹配一个或多个非空格字符。 s+匹配一个或多个空格字符。 {1,2}称为重复量词,它将前一个标记重复(?:s+S+)一次或两次。 $ 断言我们处于行的尽头。

如果您的输入包含前面或后面的空格,请使用此选项。

"^\s*\S+(?:\s+\S+){1,2}\s*$"

演示

最新更新