使用正则表达式匹配某些文本

时间:2014-01-07 16:58:25

标签: regex

我试着寻找这个答案一段时间但没有运气(对不起,如果我能说得好)。我仍然是正则表达式的新手。我试图匹配只有数字和某个分隔符的字符串。例如:模式将是8/16/32/64 / ....数字将被“/”分割为任意数量的数字,我可以找到匹配它们的方法。 我的尝试是\ d + / \ d +?但无法让它发挥作用。

4 个答案:

答案 0 :(得分:0)

一种天真的方法是

[\d/]+

但是,这与////以及12345匹配。仅匹配“正确”的字符串:

\d+(/\d+)+

读取数字后跟至少重复一次的分隔符+数字。如果允许尾随/前导分隔符,那么

/?(\d+/)+\d*

如果你使用的是使用斜杠引用正则表达式的味道(比如javascript),你需要转义它们:

/\d+(\/\d+)+/

答案 1 :(得分:0)

您可以删除'/'分隔符,然后测试是否存在数字

以下是一些C#作为例子:

    static void Main(string[] args)
    {
        string text = "8/16/32/64/";
        Console.WriteLine(text);

        TestForNum(text);
        text = "8/16/32/64/b";
        Console.WriteLine(text);
        TestForNum(text);

        Console.ReadKey();
    }

    private static void TestForNum(string text)
    {
        string tmp = Regex.Replace(text, @"/", "");
        Match m = Regex.Match(tmp, @"^\d+$");
        if(m.Success)
        {
            Console.WriteLine("\t" + m.Groups[0]);
        }
        else Console.WriteLine("\tno match");
    }

答案 2 :(得分:0)

你可以这样做:

(\d+)(\D|$)      

See this work这将拆分由任何非数字分隔的数字列表,因此1?2!3.4将匹配

如果您需要特定的分隔符,例如/

(\d+)(?:/|$)

答案 3 :(得分:0)

尽可能简单:

(\d+\/?)+

每个数字后跟[a]斜线,尽可能多。您可以对所有匹配使用g标志。