匹配日期格式的 RegEx 表达式
RegEx expression that will match Date format
我有一条线 "1999-08-16"^^xsd:date
。在 flex 文件中将整个字符串捕获为 "1999-08-16"^^xsd:date
的正则表达式是什么?并且,是否可以仅将“1999-08-16”捕获为字符串。如果是,那么它在 flex 中的正则表达式是什么?
试试这个:
^"(\d{4}-(?:0?[1-9]|1[012])-(?:30|31|[12]\d|0?[1-9]))"\^\^xsd:date$
解释:
^
- 行首
\d{4}
- 年份部分
(?:0?[1-9]|1[012])
- 月,可以是:
- 01-09 或 1-9(这就是为什么
0?
)
- 10,11,12(
1[012]
部分)
?:
表示非捕获组(如果我们只需要交替匹配
使用 |
,但不将它们输出给用户)
(?:30|31|[12]\d|0?[1-9])
- 日部分,可以是:
- 30,31,
- 10-29(部分
[12]\d
)
- 1-9,或 01-09 (
0?[1-9]
)
我们也使用非捕获组来匹配日期
$
匹配行尾
""
之间的所有内容都被捕获到标准捕获组,因为您需要提取日期
注意:
匹配天数时,我们将 1-9
天数放在 LAST 交替组中:
(?:30|31|[12]\d|0?[1-9])
这是因为正则表达式引擎在给定交替匹配时使用第一个匹配结果,而忽略其他匹配的替代项。例如-
在字符串 1 11
表达式中:
(?:\d{2}|\d)
给出 2 个匹配项
(?:\d|\d{2})
给出 3 个匹配项
要捕获整个字符串 \"[0-9]{4}-[0-9]{2}-[0-9]{2}\"\^\^[^ ]*
可以使用。
我有一条线 "1999-08-16"^^xsd:date
。在 flex 文件中将整个字符串捕获为 "1999-08-16"^^xsd:date
的正则表达式是什么?并且,是否可以仅将“1999-08-16”捕获为字符串。如果是,那么它在 flex 中的正则表达式是什么?
试试这个:
^"(\d{4}-(?:0?[1-9]|1[012])-(?:30|31|[12]\d|0?[1-9]))"\^\^xsd:date$
解释:
^
- 行首\d{4}
- 年份部分(?:0?[1-9]|1[012])
- 月,可以是:- 01-09 或 1-9(这就是为什么
0?
) - 10,11,12(
1[012]
部分)
- 01-09 或 1-9(这就是为什么
?:
表示非捕获组(如果我们只需要交替匹配 使用|
,但不将它们输出给用户)(?:30|31|[12]\d|0?[1-9])
- 日部分,可以是:- 30,31,
- 10-29(部分
[12]\d
) - 1-9,或 01-09 (
0?[1-9]
)
我们也使用非捕获组来匹配日期
$
匹配行尾""
之间的所有内容都被捕获到标准捕获组,因为您需要提取日期
注意:
匹配天数时,我们将 1-9
天数放在 LAST 交替组中:
(?:30|31|[12]\d|0?[1-9])
这是因为正则表达式引擎在给定交替匹配时使用第一个匹配结果,而忽略其他匹配的替代项。例如-
在字符串 1 11
表达式中:
(?:\d{2}|\d)
给出 2 个匹配项(?:\d|\d{2})
给出 3 个匹配项
要捕获整个字符串 \"[0-9]{4}-[0-9]{2}-[0-9]{2}\"\^\^[^ ]*
可以使用。