gpt4 book ai didi

java - 正则表达式 Sublime 到 Java 正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:21:19 25 4
gpt4 key购买 nike

我有这个正则表达式来删除.c文件中的注释(sublime 3正则表达式)

(^\/\/.*)|(\s+\/\/.*)|((\/\*)(.|\n)+?(\*\/)) 

我可以在java中使用这个正则表达式以编程方式使用它吗?如果没有,我应该使用什么正则表达式?(P.S.我知道,问我们有点愚蠢,但我根本不知道如何正则表达式)

最佳答案

请注意,模式内有太多冗余捕获组,并且 (.|\n)+? 构造效率非常低,可能会在 Java 中导致严重问题(与任何其他正则表达式一样)引擎)。

您可以使用更简化的表达式,该表达式不会导致过多的冗余回溯:

(?:^|\s+)//.*|/\*[^*]*\*+(?:[^/*][^*]*\*+)*/

请参阅regex demo 。将其与 Pattern.MULTILINE 标志一起使用(或在模式开头添加 (?m))。

模式解释:

  • (?:^|\s+)//.* - (你的 2 (^\/\/.*)|(\s+\/\/.*) 分支合并)单行注释位于字符串开头或前 1 个以上空格后,后跟 // 子字符串(包括这些空格和正斜杠)
  • | - 或
  • /\*[^*]*\*+(?:[^/*][^*]*\*+)*/ - 匹配多行 /**/ 评论

Java 声明:

String pattern = "(?m)(?:^|\\s+)//.*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";

还有一个sample code :

String s =  "// Comment\ntex test\nMore text here // and comment 2\n/* More comments\nhere and\nhere */";
String pattern = "(?m)(?:^|\\s+)//.*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";
System.out.println(s.replaceAll(pattern, ""));

关于java - 正则表达式 Sublime 到 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521346/

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