为字符串编写正则表达式

Write a Regex for a string

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

坏数据的一个例子是

ABC*HIK*UG*XY

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

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

当我使用它时没有任何反应。

"(^ABC*.XY$)"

请提供您的意见。

已编辑:

答案很完美,但是

如果我的输入文件包含这个

ABC
123
ABC*HIK*UG*XY
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

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