需要帮助来建立正则表达式

时间:2018-07-09 13:51:36

标签: c# regex

我正在解析一些输入消息,并且有以下两种情况:

  

产品名称一提货

     

要交付的第二个产品名称

     

产品名称三

如您所见,交货细节是可选的(如果输入中缺少,系统将采取一些假设)。另外请注意,产品名称可以用多个单词表示。

输入将采用以下格式:

[product name] to [verb]

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

我写了这个正则表达式来查找“ to”的位置,但是因为正则表达式的第一部分接受单词之间的空格,因此需要“拾取”或“传递”,所以最后一点什么也没得到。

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

如何优先安排最后一部分以优先采用交付选项?

2 个答案:

答案 0 :(得分:1)

当单词带有空格时,解析文本时出现问题。我要做的是将空格替换为下划线,执行解析操作,然后将下划线还原为空格。

在您的情况下,您可以在“ to”之前和之后使用字符串进行替换,并且您的单词保持连贯。如果正则表达式已经使用'_',则可以使用其他任何字符,因为您知道永远不会使用它。如有必要,甚至可以包含一组多个字符,例如“ TRP7”。但是也许您根本不需要使用正则表达式。

答案 1 :(得分:0)

在使用正则表达式解析之前分割文本听起来像最简单的选项。