一尘不染

Java获得正则表达式匹配后的文本

java

我是使用Regex的新手,我已经看过很多教程,但没有找到适合我想要做的事情的教程,

我想搜索某些内容,但返回其后的所有内容,而不是搜索字符串本身

例如“ 一些很棒的la脚的句子 ”

搜索“ 句子 ”

返回“ 真棒 ”

任何帮助将非常感激

到目前为止,这是我的正则表达式

sentence(.*) 

但它返回:很棒的句子

Pattern pattern = Pattern.compile("sentence(.*)");

Matcher matcher = pattern.matcher("some lame sentence that is awesome");

boolean found = false;
while (matcher.find())
{
    System.out.println("I found the text: " + matcher.group().toString());
    found = true;
}
if (!found)
{
    System.out.println("I didn't find the text");
}

阅读 469

收藏
2020-03-08

共1个答案

一尘不染

你可以按照注释中的要求使用“只是正则表达式”来执行此操作:

(?<=sentence).*

(?<=sentence)是肯定的断言。这会在字符串中的某个位置进行匹配,即在文本之后的某个位置进行匹配,sentence而不会使该文本本身成为匹配的一部分。因此,(?<=sentence).*将匹配之后的任何文本sentence。

这是正则表达式的一个不错的功能。但是,在Java中,这仅适用于有限长度的子表达式,即(?<=sentence|word|(foo){1,4})合法,但(?<=sentence\s*)不是。

2020-03-08