我正在尝试使用正则表达式返回字符串中的一系列单词,但我迷失在执行此操作的行之间。这是我的尝试
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
.
这里 .*?
表示您想要匹配任何内容,但尽可能少地匹配。这是为了在第一个你
时停止,而不是在最后一个。
如果您想阻止输入中的匹配,其中 hello
和 you
只是用单词边界包围它们的其他单词的一部分 \b
: \bhello\b.*?\byou\b
.
如果您只想匹配句子内部,即匹配不应包含 .
、!
或 ?
,您可以使用否定字符类如 [^.!?]
,即将 .*?
替换为 [^.!?]*?
。请注意,在字符类 .
中具有字面意义,即它是点而不是“任何字符”通配符。
关于java - 尝试使用正则表达式 java 返回字符串中的一系列单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42978733/