以下VBA正则表达式的说明?

时间:2012-08-07 07:44:36

标签: regex vba excel-vba excel

我从互联网本身采用了这个正则表达式

    RegExp.Pattern = "^(?:(?:(?:0?[13578]|1[02])(\/)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$"

我只知道正则表达式的基本细节而不是所有细节 我所知道的是它检查日期是否为dd / mm / yyyy格式,以及日期是否为闰年

我也不知道是什么意思?:?:等等。

任何人都可以通过解释上述正则表达式中每个字符的含义来告诉我这个正则表达式的全部含义。

它会帮助我学习很多东西,因为我无法理解正则表达式中出现的大多数字符

1 个答案:

答案 0 :(得分:2)

你已经选择了一个可怕的正则表达式用于学习目的,这是肯定的(它确实包含至少一些瑕疵,如果不是彻头彻尾的错误,但我不打算调试这个烂摊子)。有人可能会说,这是一个很好的例子,可以使用不同的工具更好地解决问题。

我建议你先阅读basic regex tutorial。以下是一些可以帮助您找到相关主题的指示:

^      Start of string anchor
(?...) Non-capturing group
(...)  Capturing group
[...]  Character class
?      Quantifier (1 or 0 repetition of the previous token)
|      Alternation ("or")
\2     Backreference to the second capturing group
\d     Shorthand for digit
\/     (Unnecessary escape sequence, a simple / would work just fine)
$      End of string anchor