java - 尝试使用正则表达式 java 返回字符串中的一系列单词

标签 java regex

我正在尝试使用正则表达式返回字符串中的一系列单词,但我迷失在执行此操作的行之间。这是我的尝试

private static final String REGEX = "\\hello";
       private static final String INPUT = "I love holidays hello how are you today during summer";


public static void main( String args[] ) {
          Pattern p = Pattern.compile(REGEX);
          Matcher m = p.matcher(INPUT);   // get a matcher object
          int count = 0;

          while(m.find()) {
             count++;
             System.out.println("Match number "+count);
             System.out.println("start(): "+m.start());
             System.out.println("end(): "+m.end());

             System.out.println("value of m >> "+m);//to print >>> hello how are you

有谁知道我如何使用正则表达式从字符串中返回这个词hello how are you

最佳答案

由于要求是从 hello 开始并在第一个 you 结束,因此您可以使用以下表达式:hello.*?you .

这里 .*? 表示您想要匹配任何内容,但尽可能少地匹配。这是为了在第一个时停止,而不是在最后一个。

如果您想阻止输入中的匹配,其中 helloyou 只是用单词边界包围它们的其他单词的一部分 \b : \bhello\b.*?\byou\b.

如果您只想匹配句子内部,即匹配不应包含 .!?,您可以使用否定字符类如 [^.!?],即将 .*? 替换为 [^.!?]*?。请注意,在字符类 . 中具有字面意义,即它是点而不是“任何字符”通配符。

关于java - 尝试使用正则表达式 java 返回字符串中的一系列单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42978733/

相关文章:

java - 通过套接字发送文件

java - 无法让 JTextField 在 keyPressed 上将文本设置为 null?

javascript - 正则表达式匹配字符串格式为 @ 或 # 后跟点分隔的字符串,不包含空格

java - 高效优化算法

c# - c# 和 java 之间的基准测试和差异原因

java - Java中的两种方式集合

Python 正则表达式 split() 字符串

javascript - 在 url 中获取具有正则表达式模式的搜索词

javascript - 如何使用正则表达式从textarea获取IP值

regex - Raku Regex 捕获和修改 LFM 代码块