[英]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.