【问题标题】:How to write regex for this case? [closed]如何为这种情况编写正则表达式? [关闭]
【发布时间】:2020-03-09 21:11:24
【问题描述】:

如何编写正则表达式来删除 <start:person> 之前和 <End> 结尾的“-”、“.”、“/”等字符。

例子,

----------------------------------------------
S23.<START:datetime> SEP.96 <END> 
              To 
S23 <START:datetime> SEP.96 <END> 
----------------------------------------------
S23.<START:datetime> SEP.96 <END>- 
              To 
S23 <START:datetime> SEP.96 <END> 
----------------------------------------------

所以我要删除

-
,
`
.

这些注释之前的等等。

【问题讨论】:

  • 是否“等”包括";"? "^"?我们怎么可能知道?您必须给我们一份完整的清单。如果以后您想更改列表,您可以相应地修改答案。
  • 不清楚你想要的结果是什么,所以与其重复你想要删除的字符,不如你显示删除后的文本是什么。
  • 它必须是一个普通的正则表达式替换,还是允许 Java 代码?
  • 在请其他人为您工作之前尝试自己编写如何...使用 debuggex.com 之类的网站来测试您的正则表达式...
  • @frandroid 我不知道如何写正则表达式,所以我问了社区。不好吗?

标签: java regex replace


【解决方案1】:

下面的代码可以做到:

String input = ...;
final Pattern specials = Pattern.compile("[-,`.]+");
String output = Pattern.compile("(?mi)^(.*?)(<START:(?s:.*?)<END>)(.*)$").matcher(input).replaceAll(mr ->
    specials.matcher(mr.group(1)).replaceAll("") + mr.group(2) + specials.matcher(mr.group(3)).replaceAll(""));

【讨论】:

  • 您好,mr.group 无法识别,能否提供完整代码? @安德烈亚斯
  • @AbhishekSengupta 这是完整的代码。您在问题中显示了示例输入,因此您的意思不是 input 的值,那么您还想要什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
相关资源
最近更新 更多