3 回答

TA貢獻1891條經(jīng)驗 獲得超3個贊
在你的負面回顧中,交替使用suffix
,當suffix
真正匹配時,使用+
而不是*
(因為*
可能匹配零次出現(xiàn),這是不可取的):
(?<!prefix|suffix)(suffix)+

TA貢獻1772條經(jīng)驗 獲得超5個贊
您可以在回顧之前添加一個單詞邊界斷言,以確保您從單詞字符開始匹配:
\b(?<!prefix)(?:suffix)+
然而,即使查看您的數(shù)據(jù)也\b(?:suffix)+
可能對您有用。

TA貢獻1796條經(jīng)驗 獲得超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));
}
}
添加回答
舉報