如何找到java行的一部分?

如何找到java行的一部分?,java,regex,Java,Regex,我需要显示文件的某些部分。实际上,通过使用Matcher和Pattern,我在文件中找到了一个单词。通过使用Matcher.start()和Matcher.end()我得到了单词的位置。但是我如何才能在不拆分的情况下得到单词前后的单词。这就像一个家庭作业程序。请帮助我 例如:File.txt: 只包含上面的行。然后,我在23和26的位置找到了“the”字。现在我想要“部分”,“要显示的文件。”字 实际上,通过使用String.substring(start,end),我们将得到一些部分,但我需要

我需要显示文件的某些部分。实际上,通过使用Matcher和Pattern,我在文件中找到了一个单词。通过使用Matcher.start()和Matcher.end()我得到了单词的位置。但是我如何才能在不拆分的情况下得到单词前后的单词。这就像一个家庭作业程序。请帮助我

例如:File.txt:

只包含上面的行。然后,我在23和26的位置找到了“the”字。现在我想要“部分”,“要显示的文件。”字


实际上,通过使用String.substring(start,end),我们将得到一些部分,但我需要的是确切的单词。如果我使用substring,它将给出部分单词。诀窍是要记住,
String.range
方法在Java中非常便宜。因此,您要做的是获取子字符串,即“匹配模式前的字符串”和“匹配模式后的字符串”,并应用合适的其他正则表达式从中提取您想要的答案。

string toFind=“day”;
String toFind = "day";
String sentence = "wolfrevokcatS no snoitseuq krowemoh tsop ot yad enif a si tI";

char[] charArray = sentence.toCharArray();

String reversedSentence = "";

for(int i = 0; i < charArray.length; ++i) {
    reversedSentence += charArray[charArray.length - i - 1];
}

System.out.println(reversedSentence);
boolean matches = reversedSentence.matches(".+" + toFind + ".+");

if(matches) {

    int start = reversedSentence.indexOf(toFind);
    int end = start + toFind.length();

    System.out.println("Before word to find: " + reversedSentence.substring(0, start));
    System.out.println("Word to find: " + reversedSentence.substring(start, end));
    System.out.println("After word to find: " + reversedSentence.substring(end, reversedSentence.length()));
}
字符串语句=“wolfrevokcatS no snoitseuq krowemoh tsop ot yad enif a si tI”; char[]charArray=句子.toCharArray(); 字符串反转句子=”; 对于(int i=0;i

下面是一个使用正则表达式的解决方案。如果您能够理解这段代码,您将在Java中很好地处理字符串。我还没有证明它对所有输入都是正确的,我把它作为练习留给问题的作者。

什么是“某种药剂”?下一个/前三个单词?不完全是,找到单词前后的一些单词我不明白你的意思。我只搜索了这个地方。如何使用正则表达式查找你还可以设置
匹配器的区域,重置
模式,然后从那里继续,但这对我来说更像是一项艰巨的工作。嗯,匹配三个单词的regexp可能是
\S+\S+\S+\S+\S+
,这差不多就是我想为家庭作业问题提供的帮助;你已经有了一个策略,现在仔细考虑并制定代码。