gpt4 book ai didi

java - %{ ... %} 评论的正则表达式

转载 作者:行者123 更新时间:2023-12-01 12:02:14 25 4
gpt4 key购买 nike

我正在尝试使用 Java 正则表达式从 Matlab 源代码中过滤掉以下形式的所有多行注释:%{ (anything here) %}

我的测试文件如下:

a = magic(3);
%{
sum(a)
diag(a)
sum(diag(a))
%}
sum(diag(fliplr(a)))

我的模式如下:

%\\{.*%\\}\n

但是,当用空字符串替换文本中出现的所有该模式时(使用方法replaceAll),多行注释不会被删除。为什么我的模式不好?

最佳答案

您需要启用 DOTALL 模式(?s),以便正则表达式中的点也与换行符匹配。而且您还必须需要使 .* 成为非贪婪的。

"(?s)%\\{.*?%\\}\n?"

代码:

String inputString = "a = magic(3);\n" + 
"%{\n" +
"sum(a)\n" +
"diag(a)\n" +
"sum(diag(a))\n" +
"%}\n" +
"sum(diag(fliplr(a)))";
System.out.println(inputString.replaceAll("(?s)%\\{.*?%\\}\n?", ""));

输出:

a = magic(3);
sum(diag(fliplr(a)))

关于java - %{ ... %} 评论的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27906807/

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