划分 a|b|c 的正则表达式

Regular expression to divide a|b|c

必须划分变长的跟踪码a|b|c或a|b|c|d

我一直想要 'a' 去 'Name' 'b' 去 'ID' 'c' 去 'Title'

所以设置了下面的规则

#   Select Rule Type    Enter Match Criteria    Set Classification  To
1   Regular Expression  ^(.+)\|(.+)\|(.+)$  Name            
2   Regular Expression  ^(.+)\|(.+)\|(.+)$  ID              
3   Regular Expression  ^(.+)\|(.+)\|(.+)$  Title           

这对 a|b|c 工作正常,但是对于像 a|b|c|d 这样的不同长度,结果不正确,如下所示:--

'a|b' 至 'Name' 'c' 到 'ID' 'd' 到 'Title'

你能建议如何解决这个问题,使 a|b|c|d 的结果成为

a' 去 'Name' 'b' 去 'ID' 'c|d' 到 'Title'

你应该试试这个对列表中的 1 到 N 个元素有效的方法。

[^\|]+?[^\|]*

你也可以在这个DEMO里试试。

编辑: 根据您的需要,我建议使用此正则表达式:

(.*?)\|(.*?)\|(.*)

你也可以看看DEMO

来自 here 的快速解释: .+? 部分是 .+ 的非贪婪版本(任何一个或多个)。当我们使用 .+ 时,引擎基本上会匹配所有内容。然后,如果正则表达式中有其他内容,它将返回以尝试匹配以下部分。这就是贪婪行为,意思是尽可能满足

当使用.+?时,引擎不会一次匹配所有并返回其他条件(如果有),而是逐步匹配下一个字符,直到匹配正则表达式的后续部分(再次如果有的话)。这是非贪婪,意思是匹配尽可能少的满足