gpt4 book ai didi

Java 正则表达式查找除 B 之外的所有 A

转载 作者:行者123 更新时间:2023-11-30 11:03:03 24 4
gpt4 key购买 nike

案例如下:我想使用 java 删除匹配 "//[^\n]*" 的所有内容,除了匹配 "\"[^\n]*//[^\n 的所有内容\"]\""。几乎,我需要删除所有注释样式输入,除非它包含在字符串中。我尝试了正则表达式 "(//[^\n]*) -(\"[^\n]*//[^\n]*\")",但这并不能替代任何东西。

最佳答案

您可以使用以下正则表达式从一行中删除评论:

^(([^\"]*|\"([^\"\\\\]|[\\\\].)*\")*)//.*$

然后将其替换为第一个匹配组。此正则表达式还考虑了转义引号。

在 Java 中,它是这样的:

Pattern regex = Pattern.compile("^(([^\"]*|\"([^\"\\\\]|[\\\\].)*\")*)//.*$");
String code = ...;
String result = regex.matcher(code).replaceAll("$1");

online jdoodle demo .

正则表达式强制一旦你打开一个字符串,你也需要关闭它:

      start string          stop string
| |
v v
(([^\"]*|\"([^\"\\\\]|[\\\\].)*\")*)
^ ^ ^
| | \escapes require at least one extra token
any non-string non-escape in string

然后,您可以通过简单地将 String 拆分为单行并遍历这些行并用上面讨论的方法替换这些行来删除所有此类注释。

尽管如果您进行编程语言处理,最好利用该编程语言的解析器,或用于进行此类语言处理的框架.

关于Java 正则表达式查找除 B 之外的所有 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552593/

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