我有一句话,例如:
产品必须在2015年12月25日之前发货时间:12:30:00
我想要做的是捕捉日期/时间,而不是“"时间:"在答案中。因此捕获组将包含
25-Dec-2015 12:30:00
我尝试过前瞻和后视但没有任何成功。
答案 0 :(得分:1)
您可以使用群组分别捕捉日期和时间:
(\d{1,2}-[a-zA-Z]{3}-\d{4}) Time: (\d{2}:\d{2}:\d{2})
此处整个匹配为25-Dec-2015 Time: 12:30:00
,但您可以访问第一组25-Dec-2015
和第二组12:30:00
。
答案 1 :(得分:1)
这种模式:
^.*\s+(\d\d-...-2\d\d\d)\s+Time:\s+(\d\d:\d\d:\d\d)
将找到两个子串并将它们分组。
如果您的下一步包括编程,您可以再次连接它们。
这是一个C#示例:
static void Main(string[] args)
{
string pattern = @"^.*\s+(\d\d-...-2\d\d\d)\s+Time:\s+(\d\d:\d\d:\d\d)";
string input = "The product must be shipped by 25-Dec-2015 Time: 12:30:00";
Match match = Regex.Match(input, pattern);
string date = match.Groups[1].Value;
string time = match.Groups[2].Value;
string concatenated = date + " " + time;
Console.WriteLine(concatenated);
}
请注意Regex!=正则表达式。根据实施情况,存在差异。
Jeffrey E. F. Friedl写了一本关于这个主题的优秀书。