【问题标题】:Regular expression to divide a|b|c正则表达式来划分 a|b|c
【发布时间】:2017-03-22 11:11:51
【问题描述】:

必须划分不同长度的跟踪代码a|b|c或a|b|c|d

我一直想要 'a' 去'名字' '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

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

'a|b' 到 '名称' 'c' 到 'ID' “d”到“标题”

您能否建议如何解决此问题,以便 a|b|c|d 的结果为

a' 转到“名称” 'b' 去 'ID' 'c|d' 到 '标题'

【问题讨论】:

  • 您能否添加一些示例输入以及该输入应匹配的内容
  • 我回答了一个正则表达式,它根据字符 | 划分您的输入。但是,再次阅读您的问题并不清楚您真正需要什么。因此,如果我的答案不是您所需要的,您能否提供更详细的信息?
  • @Vallentin 以 BRightcove|ya0o-0SRKPkeds|WONDERGOAL 为例! |利亚姆·凯利 |阅读FC |爱尔兰 u19s vs 瑞典 | 12.10.13 ------------------------------------------- Brightcove 去'Player NAME' ya0o-0SRKPkeds 到 'ID' 和其余的 WONDERGOAL 来自中线! |利亚姆·凯利 |阅读FC |爱尔兰 u19s vs 瑞典 | 12.10.13 到“标题”

标签: regex classification builder rule


【解决方案1】:

你应该试试这个适用于你列表中的 1 到 N 个元素。

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

你也可以在这个DEMO试试。

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

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

你也可以看看DEMO

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

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

【讨论】:

  • 这很好,但是对于不同的长度,我只有 3 个桶,所以分隔的管道中的第一个值应该去第一个桶,第二个值应该去第二个,其余的应该去最后一个桶,例如让我们以 BRightcove|ya0o-0SRKPkeds|WONDERGOAL 为例! |利亚姆·凯利 |阅读FC |爱尔兰 u19s vs 瑞典 | 12.10.13 ------------------------------------------- Brightcove 去'Player NAME' ya0o-0SRKPkeds 到 'ID' 和其余的 WONDERGOAL 来自中线! |利亚姆·凯利 |阅读FC |爱尔兰 u19s vs 瑞典 | 12.10.13 到“标题”
猜你喜欢
  • 2021-01-10
  • 2014-09-20
  • 1970-01-01
  • 2015-02-20
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多