代码之家  ›  专栏  ›  技术社区  ›  Rez.Net

需要帮助构建regex

  •  -1
  • Rez.Net  · 技术社区  · 7 年前

    我正在分析一些输入消息,我有两个场景:

    品名一取

    产品名称二交付

    产品名称三

    如您所见,交付详细信息是可选的(如果输入中缺少,系统将进行一些假设)。还要注意,产品名称可以是多个单词。

    输入格式如下:

    [product name] to [verb]
    

    但是 to [verb] 部分可以排除,因为它是可选的。

    我写这个regex是为了寻找“to”在哪里,但是因为regex的第一部分接受单词之间的空格,所以它需要“to pickup”或“to deliver”,所以最后一位什么也得不到。

    (?<Item>(\w*\s*)+)\s*(?<DeliveryOption>((?<=to)\s*(PIC|DEL|PICKUP|DELIVERY|P|D|TAKEAWAY|AWAY))?)\s*$
    

    我如何优先考虑最后一部分,首先选择交付选项?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Battle    7 年前

    有一次,我有一个问题,在分析文本时,有一个词与空格。我所做的是将空格替换为下划线,执行解析操作,然后将下划线还原为空格。

    在您的例子中,您可以在“to”前后取字符串并进行替换,您的单词保持一致。如果regex已经使用了“u”,您可以使用任何其他字符,因为您知道它永远不会被使用。如有必要,甚至可能是一组多字符,如“trp7”。但也许你根本不需要使用regex。

        2
  •  0
  •   Rez.Net    7 年前

    用regex解析之前拆分文本听起来是最简单的选项。