我正在解析一些输入消息,并且有以下两种情况:
产品名称一提货
要交付的第二个产品名称
产品名称三
如您所见,交货细节是可选的(如果输入中缺少,系统将采取一些假设)。另外请注意,产品名称可以用多个单词表示。
输入将采用以下格式:
[product name] to [verb]
但是to [verb]
部分可以排除,因为它是可选的。
我写了这个正则表达式来查找“ to”的位置,但是因为正则表达式的第一部分接受单词之间的空格,因此需要“拾取”或“传递”,所以最后一点什么也没得到。
(?<Item>(\w*\s*)+)\s*(?<DeliveryOption>((?<=to)\s*(PIC|DEL|PICKUP|DELIVERY|P|D|TAKEAWAY|AWAY))?)\s*$
如何优先安排最后一部分以优先采用交付选项?
答案 0 :(得分:1)
当单词带有空格时,解析文本时出现问题。我要做的是将空格替换为下划线,执行解析操作,然后将下划线还原为空格。
在您的情况下,您可以在“ to”之前和之后使用字符串进行替换,并且您的单词保持连贯。如果正则表达式已经使用'_',则可以使用其他任何字符,因为您知道永远不会使用它。如有必要,甚至可以包含一组多个字符,例如“ TRP7”。但是也许您根本不需要使用正则表达式。
答案 1 :(得分:0)
在使用正则表达式解析之前分割文本听起来像最简单的选项。