【问题标题】:Regex. Match word until pattern containing space and line正则表达式。匹配单词直到包含空格和行的模式
【发布时间】:2011-11-04 08:55:27
【问题描述】:

我得到一个这样的文本行:

SOMENAME (KEYONE(任何字符) - KEYTWO(由数字组成) - KEYTHREE - KEYFOUR) - KEYFIVE


我需要一个正则表达式来提取密钥。键之间的分隔符是“ 空间线空间 ”。
我得到了这个工作除了KEYONE之外的所有东西。问题是 KEYONE,可能包含
像这样的空格或线条(不是同时):

  • SOMENAME(KEY-ONE - KEYTWO - KEYTHREE - KEYFOUR) - KEYFIVE
  • SOMENAME(键一 - 键二 - 键三 - 键四) - 键五

问题是第一个关键,到目前为止我已经尝试了这两个表达式:

  • `^(\\s-\\s]+` 适用于字符和数字,但如果 KEYONE 包含空格或行,则中断。
  • `(a-z0-9]+` 这适用于数字和空格,但如果 KEYONE 只是数字则中断。

如果我不能完成这项工作,我会改为进行字符串拆分。

感谢所有帮助! :)

完整代码:

     Regex emailregex = new Regex("(?<DOCCLASS>[^( - $ ]+) - (?<DOCNO>[^ - ]+) - (?<DOCSHEET>[^\\s-\\s]+) - (?<DOCREV>[^\\s-\\s)]+)");
        string title = "MY%20TITLE.DOCM%20(10 003%20-%201202827%20-%201%20-%20A2)%20-%201";

        String decodedTitle = Uri.UnescapeDataString(title);// //Server.UrlDecode(documentSharepointTitle);




        Match m = emailregex.Match(decodedTitle);
        if (m.Success)
        {
            Console.WriteLine("DOC_CLASS: " + m.Groups["DOCCLASS"].Value);
            Console.WriteLine("DOC_NO: " + m.Groups["DOCNO"].Value);
            Console.WriteLine("DOC_SHEET: " + m.Groups["DOCSHEET"].Value);
            Console.WriteLine("DOC_REV: " + m.Groups["DOCREV"].Value);
            Console.WriteLine("DOC_TYPE: " + m.Groups["DOCTYPE"].Value);
        }
        else
        {
            Console.WriteLine(decodedTitle + " , does not match document title pattern.");
        }
        Console.WriteLine();
        System.Console.WriteLine("Press Enter to Continue...");
        System.Console.ReadLine();

【问题讨论】:

  • 欢迎来到 Stack Overflow!您正在询问一个正则表达式问题,但未指定您的正则表达式类型是否是 Perl、EGrep、Javascript、Awk、Vim,……请提供更多详细信息!

标签: regex


【解决方案1】:

试试这个:

^\w+\s\(([\w\s-]+)\s-\s(\d+)\s-\s(\w+)\s-\s(\w+)\)\s-\s(\w+)$

顺便说一句……如果你提供一些例子会容易得多。我不打算自己发明它们,所以我无法真正检查它是否按预期工作。

【讨论】:

    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 2013-07-09
    • 2016-01-14
    • 2022-12-11
    相关资源
    最近更新 更多