3 回答
TA贡献1891条经验 获得超3个赞
在你的负面回顾中,交替使用suffix
,当suffix
真正匹配时,使用+
而不是*
(因为*
可能匹配零次出现,这是不可取的):
(?<!prefix|suffix)(suffix)+
TA贡献1772条经验 获得超5个赞
您可以在回顾之前添加一个单词边界断言,以确保您从单词字符开始匹配:
\b(?<!prefix)(?:suffix)+
然而,即使查看您的数据也\b(?:suffix)+
可能对您有用。
TA贡献1796条经验 获得超4个赞
我的猜测是,也许我们可以从这个表达式开始,
^(?=(?!prefix)(suffix))\1+$
演示
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "^(?=(?!prefix)(suffix))\\1+$";
final String string = "prefixsuffix\n"
+ "prefixsuffixsuffix\n"
+ "prefixsuffixsuffixsuffix\n\n"
+ "suffix\n"
+ "suffixsuffix\n"
+ "suffixsuffixsuffix";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
添加回答
举报