正则表达式有条件地删除字符串

时间:2016-02-05 01:57:04

标签: java android regex

我想删除dd /或/ dd /或/ dd但是如果是/ dd /我想用/替换它,使它看起来像MM / YYYY。

dd/MM/YYYY
MM/dd/YYYY
MM/YYYY/dd


[^\p{Alpha}]*d+[^\p{Alpha}]*

以上是我目前的正则表达式。

我想要实现的是, MM / YYYY YYYY / MM

现在,如果我替换/ dd /,则会导致

MMYYYY 要么 YYYYMM

3 个答案:

答案 0 :(得分:1)

就可理解性而言,最好的一个是将三个选项拼写为替代选择:

/dd(?=/)|^dd/|/dd$

那是:

  • /dd(?=/)字符串" / dd"文本中的任何地方,然后是(正向前瞻)a" /"
  • ^dd/字符串" dd /"在文本的开头
  • /dd$字符串" / dd"在文本的最后

第一个替代方案是在" / dd"之后用结束斜线编写的预测。这样斜杠就不会消耗掉,并留在字符串中,以便" MM / dd / YYYY"在中间保留一个斜线。

答案 1 :(得分:0)

我认为您正在寻找的是Java中的PatternMatcher类。尝试为正则表达式找到匹配项,并为每次匹配调用replaceAll()replaceOne()函数。

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

答案 2 :(得分:0)

您可以使用正则表达式实现此目的:d

不确定{{1}}您的意思是数字还是{{1}}。 你在那里的正则表达式更通用,匹配远远超过要求。