划分 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 的快速解释:
.+?
部分是 .+
的非贪婪版本(任何一个或多个)。当我们使用 .+
时,引擎基本上会匹配所有内容。然后,如果正则表达式中有其他内容,它将返回以尝试匹配以下部分。这就是贪婪行为,意思是尽可能满足。
当使用.+?
时,引擎不会一次匹配所有并返回其他条件(如果有),而是逐步匹配下一个字符,直到匹配正则表达式的后续部分(再次如果有的话)。这是非贪婪,意思是匹配尽可能少的满足。
必须划分变长的跟踪码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 的快速解释:
.+?
部分是 .+
的非贪婪版本(任何一个或多个)。当我们使用 .+
时,引擎基本上会匹配所有内容。然后,如果正则表达式中有其他内容,它将返回以尝试匹配以下部分。这就是贪婪行为,意思是尽可能满足。
当使用.+?
时,引擎不会一次匹配所有并返回其他条件(如果有),而是逐步匹配下一个字符,直到匹配正则表达式的后续部分(再次如果有的话)。这是非贪婪,意思是匹配尽可能少的满足。