用“,”之间的正则表达式提取文本

时间:2013-04-23 19:50:31

标签: regex sequence

我一直在努力制作一个正则表达式来提取下面的信息,分为“,”之间的3部分。只有第一个和第二个序列(星期五和日期已经成功)。

2013年4月26日星期五,18:30

我希望有人有经验。

祝你好运

5 个答案:

答案 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)

有关详细信息,请参阅strptimedate 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。