为字符串编写正则表达式
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)
您好,我有一个包含很多错误数据行的文件。我已经确定了包含错误数据的行。该文件很大,无法手动完成。这个问题将来可能会再次出现,所以我在 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)