1

我想制作一个正则表达式,以便可以匹配以下日期并将其元素传递给另一个函数:

"21Feb14"

现在的问题是前两位数。用户可以编写一个“day”字段为一位数或两位数的日期:

"21feb14" and "1jan13"

两者都是有效的输入。我制作的正则表达式如下所示:

val reg = """(\\d)([a-zA-Z][a-zA-Z][a-zA-Z])(\d\d)""".r

它显然没有考虑到第一个数字可能存在也可能不存在。我该如何处理?

4

2 回答 2

4

?标记处理。像这样,

(\d?\d)([a-zA-Z][a-zA-Z][a-zA-Z])(\d\d)

但我建议你使用以下正则表达式

(\d?\d)([a-zA-Z]{3})(\d\d)

或使用 posix

(\d?\d)([\p{Alpha}]{3})(\d\d)
于 2013-10-25T05:54:29.653 回答
2

这个更具可读性和可维护性

val reg = """(\d{1,2})([a-zA-Z]{3})(\d{2})""".r

这里的解释:http ://regex101.com/r/uZ9qI5

于 2013-10-25T06:00:34.947 回答