gpt4 book ai didi

java - 正则表达式用新行数替换注释

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:26 26 4
gpt4 key购买 nike

我想用该注释的新行数替换所有 Java 风格的注释 (/* */)。到目前为止,我只能想出一些用空字符串替换评论的东西

String.replaceAll("/\\*[\\s\\S]*?\\*/", "")

是否可以用它包含的新行数替换匹配的正则表达式?如果仅通过正则表达式匹配无法做到这一点,那么最好的方法是什么?

例如,

/* This comment
has 2 new lines
contained within */

将替换为仅包含 2 行的字符串。

最佳答案

因为 Java 支持 \G构造,一次搞定。
使用全局正则表达式替换函数。

寻找

"/(?:\\/\\*(?=[\\S\\s]*?\\*\\/)|(?<!\\*\\/)(?!^)\\G)(?:(?!\\r?\\n|\\*\\/).)*((?:\\r?\\n)?)(?:\\*\\/)?/"

替换

"$1"

https://regex101.com/r/l1VraO/1

展开

 (?:
/ \*
(?= [\S\s]*? \* / )
|
(?<! \* / )
(?! ^ )
\G
)
(?:
(?! \r? \n | \* / )
.
)*
( # (1 start)
(?: \r? \n )?
) # (1 end)
(?: \* / )?

============================================ ======
=============================================== ===

如果你应该关心开始于
的注释 block 定界符像这样引用字符串

String comment = "/* this is a comment*/"

这是一个解析引用字符串和注释的正则表达式(添加)。
仍然在全局查找/替换中同时在单个正则表达式中完成。

寻找

"/(\"[^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*\")|(?:\\/\\*(?=[\\S\\s]*?\\*\\/)|(?<!\")(?<!\\*\\/)(?!^)\\G)(?:(?!\\r?\\n|\\*\\/).)*((?:\\r?\\n)?)(?:\\*\\/)?/"

替换

"$1$2"

https://regex101.com/r/tUwuAI/1

展开

    (                             # (1 start)
"
[^"\\]*
(?:
\\ [\S\s]
[^"\\]*

)*
"
) # (1 end)
|
(?:
/ \*
(?= [\S\s]*? \* / )
|
(?<! " )
(?<! \* / )
(?! ^ )
\G
)
(?:
(?! \r? \n | \* / )
.
)*
( # (2 start)
(?: \r? \n )?
) # (2 end)
(?: \* / )?

关于java - 正则表达式用新行数替换注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57812967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com