【发布时间】:2014-01-27 23:25:45
【问题描述】:
我有一个目前可以正常工作的正则表达式。但现在我想添加它以捕获日期。
当前正则表达式:
(?<GeneralHelp>^/help\s*)?
(?:/client:)
(?<Client>\w*)
(?:(?:\s*/(?<ClientHelp>help))*)*
(?:(?:\s*/)(?<Modules>createHistory)(?:(?:\s*/(?<ModuleHelp>help))*)*)*
我添加到最后:
(?:(?:\s*/)(?<StartDate>^([0]?[1-9]|[1|2][0-9]|[3][0|1])[. -]([0]?[1-9]|[1][0-2])[. -]([0-9]{4}|[0-9]{2})$))*)*
(?:(?:\s*/)(?<EndDate>^([0]?[1-9]|[1|2][0-9]|[3][0|1])[. -]([0]?[1-9]|[1][0-2])[. -]([0-9]{4}|[0-9]{2})$))*)*
使用下面的示例,它不会获取日期,但它会匹配其他所有内容。
/client:testClient/createHistory/11-11-2013/11.11.2013
此正则表达式用于在控制台应用程序的字符串数组参数中分解Main 一个字符串。我的团队中没有人在正则表达式中“流利”,我们也没有时间变得流利。我们尽我们所能工作,而我今天想到的这个补充可能会给我们的项目带来更大的问题,而且我们的时间不多了。因此,我们将不胜感激。
【问题讨论】:
-
您应该添加一些应用正则表达式的示例数据。您是否故意没有在
[. -]中逃脱.和-?据我所知,这些仍应被解释,因此.将匹配任何字符,而不仅仅是句点。 -
@Mario:不,[。 -] 表示“匹配 .、空格或 -”。因为“-”是字符类中的最后一个,所以无意匹配范围没有问题。
-
@Mario:在方括号内,
.只是一个点,-只是一个连字符,如果它紧挨着一个括号。 @Kendra:你在(?:\s*/)上使用非选择性括号有什么原因吗? -
好的,知道
-,但不确定.。不过说实话也没什么意义。 -
@KendraBall 我建议你学习一些正则表达式,而不是盲目地从其他人那里使用它,因为你已经发现了一些非常明显的错误。