必须划分不同长度的跟踪代码a | b | c或a | b | c | d
我一直想要 '一个'去'姓名' ' B'转到ID' ' C'去标题'
所以设置了以下规则
# Select Rule Type Enter Match Criteria Set Classification To
1 Regular Expression ^(.+)\|(.+)\|(.+)$ Name $1
2 Regular Expression ^(.+)\|(.+)\|(.+)$ ID $2
3 Regular Expression ^(.+)\|(.+)\|(.+)$ Title $3
这适用于| b | c,但是对于不同的长度,如| b | c | d结果不正确,如下所示: -
' A | B'到'姓名' ' C'到' ID' ' d'到'标题'
您能否建议如何解决此问题,以便| b | c | d的结果为
一个'去'姓名' ' B'转到ID' ' C ^ | d'到'标题'
答案 0 :(得分:0)
你应该试试这个适用于列表中1到N个元素的那个。
[^\|]+?[^\|]*
您也可以在此DEMO中尝试。
修改强> 根据你的需要,我建议这个正则表达式:
(.*?)\|(.*?)\|(.*)
您还可以查看DEMO。
来自here的快速解释:
.+?
部分是.+
(一个或多个任何东西)的非贪婪版本。当我们使用.+
时,引擎基本上会匹配所有内容。然后,如果正则表达式中还有其他内容,它将返回尝试匹配以下部分的步骤。这是贪心行为,意味着尽可能多来满足。
使用.+?
时,不是一次匹配所有内容而是返回其他条件(如果有),引擎将逐步匹配下一个字符,直到匹配正则表达式的后续部分(如果有的话) )。这是非贪婪,意味着匹配最少可能满足。