我一直在努力制作一个正则表达式来提取下面的信息,分为“,”之间的3部分。只有第一个和第二个序列(星期五和日期已经成功)。
2013年4月26日星期五,18:30
我希望有人有经验。
祝你好运
答案 0 :(得分:3)
为什么不简单地拆分字符串并修剪各个部分的多余空格?例如,用C#编写:
string input = "Friday, 26 Apr 2013, 18:30";
string[] parts = input.Split(',');
for (int i = 0; i < parts.Length; i++)
{
parts[i] = parts[i].Trim();
}
Console.WriteLine(parts[0]); // "Friday"
Console.WriteLine(parts[1]); // "26 Apr 2013"
Console.WriteLine(parts[2]); // "18:30"
如果你真的想为此使用正则表达式,^(.*),(.*),(.*)$
应该有效:
string input = "Friday, 26 Apr 2013, 18:30";
Regex regex = new Regex("^(.*),(.*),(.*)$", RegexOptions.Singleline);
Match match = regex.Match(input);
Console.WriteLine(match.Groups[1].Value.Trim()); // "Friday"
Console.WriteLine(match.Groups[2].Value.Trim()); // "26 Apr 2013"
Console.WriteLine(match.Groups[3].Value.Trim()); // "18:30"
添加适当的错误检查留给读者练习。
答案 1 :(得分:1)
以下Regex表达式匹配整个部分:
, 18:30
I hope someone has the experience.
Best regards
,+\s[0-9]+:[0-9]+ \r*.*
但是,对于这种“,小时:Minuts [...]”格式来说,这是特定的。如果您使用的是PHP或同等语言的语言,则应该进行拆分。
答案 2 :(得分:1)
我认为你真正想要的是这样的:
from datetime import datetime
s="Friday, 26 Apr 2013, 18:30"
d=datetime.strptime(s, "%A, %d %b %Y, %H:%M")
d
Out[7]: datetime.datetime(2013, 4, 26, 18, 30)
有关详细信息,请参阅strptime和date format文档。)
编辑:抱歉,我在某种程度上假设您使用的是Python。其他语言也有类似的习语,例如PHP's date_parse,C#的DateTime.Parse等
答案 3 :(得分:0)
您没有指定语言,因此我将使用标准的REGEX方法回答这个问题。
(?<=(^|,\s+)).+?(?=(,|$))
会为你效劳。
让我分解它正在做的事情。
(?<=(^|,\s+)
- 提前查看字符串或逗号后跟空格的开头,但不要在匹配中包含它。所有比赛必须在他们面前。.+?
- 抓住所有角色,但不要贪心。(?=(,|$))
- 查看字符串或逗号的结尾。所有比赛必须在他们身后。在Friday, 26 Apr 2013, 18:30
的测试用例上运行时,我得到3个匹配项:
Friday
26 Apr 2013
18:30
答案 4 :(得分:0)
与m01的答案一样,您可以尝试使用C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
namespace TestDate
{
class Program
{
static void Main(string[] args)
{
string dateString = "Friday, 26 Apr 2013, 18:30"; // Modified from MSDN
string format = "dddd, dd MMM yyyy, HH:mm";
DateTime dateTime = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
Console.WriteLine(dateTime);
Console.Read();
}
}
}
这将打印出在用户计算机上配置的本地化日期和时间。对我来说,它打印出4/16/2013 6:30:00 PM。