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

标签 java regex

我正在使用 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*$"

DEMO

关于java - 正则表达式,如何识别由空格分隔的 2 或 3 个单词(任何非空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638325/

相关文章:

java - 为什么 new Something() 和 Something.class.newinstance() 之间没有明显的区别?

Javascript:将非表达式简化为捕获组的正则表达式

javascript - 从 URL 检索的正则表达式

c++ - boost::regex_replace 中两个参数格式函数的问题

java - 方法/参数名称会影响堆栈上占用的内存量吗?

java - 我怎样才能让一台服务器接受 2 个不同网站的安全流量

java - 从文件中读取模式与字符串文字

c++ - 使用 std::regex_match 匹配单个数字

regex - 将正则表达式与 perl/sed/awk 中的变量字符串匹配

java - 尝试比较现有Java项目从Ant构建到Maven或Gradle的迁移?