gpt4 book ai didi

java - 为字符串编写正则表达式

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

您好,我的文件中有很多错误的数据行。我已识别出包含错误数据的行。文件太大,无法手动完成。这个问题将来可能会再次出现,所以我正在用java编写一个小工具来根据输入正则表达式删除坏段并将其删除。

坏数据的一个例子是

ABC*HIK*UG*XY\17

我正在尝试为上面的字符串编写一个正则表达式。到目前为止

只有 "(^ABC)" 有效,并且 ABC 被删除。

当我使用这个时,没有任何反应。

"(^ABC*.XY\17$)"

请提供您的意见。

编辑:

答案很完美,但是

如果我的输入文件包含此

ABC
123
ABC*HIK*UG*XY\17
1025
KHJ*YU*789

我应该得到类似的输出

ABC
123
1025
KHJ*YU*789

但我就是这样

ABC
123

1025
KHJ*YU*789

最佳答案

将您的模式更改为,

"^ABC.*XY\\\\17$"

在 java 中,您需要将反斜杠再转义三次才能匹配单个 \ 字符。并且匹配任何字符零次或多次的模式必须类似于 .* 而不是 *. 而且您不需要将模式放入捕获组中。

String s = "ABC\n" + 
"123\n" +
"ABC*HIK*UG*XY\\17\n" +
"1025\n" +
"KHJ*YU*789";
System.out.println(s.replaceAll("(?m)^ABC.*XY\\\\17\n?", ""));

输出:

ABC
123
1025
KHJ*YU*789

由于我们在正则表达式中使用 anchor ,因此我们需要添加修饰符。在我们的例子中,我们需要添加多行修饰符 (?m)

关于java - 为字符串编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969399/

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