2017-06-29 47 views
1

我使用正則表達式來刪除所有的行開始一個certian字符串,但它的作品是刪除所有的行,但行分隔符仍然存在,這留下了大量的空行。我如何修改正則表達式?正則表達式replaceAll如何包含行分隔符

public class Manipulator { 

private static final String RECOVERY_1 = "RecoveryRate.1.*"; 

public static String remove(String input) { 

    String remove = input; 
    remove = remove.replaceAll(RECOVERY_1, ""); 
    return remove; 
} 

回答

2

末添加\R*換行模式:

private static final String RECOVERY_1 = "RecoveryRate.1.*\\R*"; 

或者

private static final String RECOVERY_1 = "RecoveryRate.1.*[\r\n]*"; 

搭配可選0+換行符。

注意,你可能會告訴正則表達式引擎僅在與Pattern.MULTILINE標誌(或它的內嵌版本,(?i)一行的開始匹配這些模式,在該模式的開始,即"(?m)^RecoveryRate...."將開始匹配RecoveryRate)。

如果1之前的.是字面點,則需要將其轉義("\\.")。

你的方法可縮短到

public static String remove(String input) { 
    return input.replaceAll(RECOVERY_1, ""); 
} 
+0

非常感謝,它的工作原理! – QSY

+0

@QSY哎呀,剛纔注意到我在更新的方法中留下了'remove',修正了。 –

相關問題