簡體   English   中英

在塊注釋中使用Java RegEx查找和替換模式

[英]Find and Replace a pattern using Java RegEx in block comments

這是用於查找塊注釋的正則表達式,它絕對可以正常工作

/\\*(?>(?:(?>[^*]+)|\\*(?!/))*)\\*/

我只需要對其進行一點修改。 查找在塊注釋中存在“可能”的分號(;),並將其替換為空格。

目前我正在這樣做

while (m.find()) {
    if (m.group().contains(";")) {
        replacement = m.group().replaceAll(";", "");
        m.appendReplacement(sb, replacement);
    }
}
m.appendTail(sb);

但是我需要用str.replaceAll這類語句替換它。 簡而言之,因為我沒有內存異常,所以更有效的方法。 我修復了其他一些引發相同異常的正則表達式,它們工作正常。 我希望這個正則表達式也可以優化。

-編輯-

這些是您可以測試此正則表達式的字符串

/* this* is a ;*comment ; */

/* This ; is* 
another
;*block
comment;
;*/

謝謝

使用(?s)/\\*.+?\\*/ regexp非常簡單。 在您的表情中,您使用否定的前瞻來“吃掉”您的記憶。 而且您的代碼可能更簡單:

while (m.find()) {
    m.appendReplacement(sb, m.group().replace(";","");
}
m.appendTail(sb);

有兩種變體(都嘗試):

1)。 為什么使用?> 我不知道這意味着什么,也不需要在這里使用特殊的東西,例如?> 更改為?:

2)。 您的循環是無限的。 你需要這個:

    int index = 0;
    while (m.find(index)) {
        if (m.group().contains(";")) {
            replacement = m.group().replaceAll(";", "");
            m.appendReplacement(sb, replacement);
        }
        index = m.end();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM