正则表达式逗号和列

时间:2011-09-22 17:42:14

标签: .net regex

解析我传递查询字符串的Solr查询时遇到问题:

我最终必须使用的值如下所示:

  

ed_deliveryMethod:面对   面,ed_location:亚历山大,VA,ed_delivery:就地

我需要一个解析键值对的正则表达式:

  • ed_deliveryMethod:面对面
  • ed_location:亚历山大,VA
  • ed_delivery:就地

所以我需要一个正则表达式来解析

  

FacetName:FacetValue

我用逗号进行分割,但该位置上的逗号会丢掉一些东西。

最后一个逗号是可选的,因为可能只有一个过滤器。

在问这个问题之前我确实尝试了很多东西,但没有成功。你可以看到,我不擅长正则表达式。

((?<Facet>.+):(?<FacetValue>.+),)+

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

(?<Facet>\w+):(?<FacetValue>.+?)(?=,\w+:|$)

也许您需要调整\w以包含所有允许的密钥字符。

答案 1 :(得分:1)

使用QueryString.GetValues(key),它返回一个值数组。

E.g。如果您在评论中提及&filter=category:car&filter=category:motorcycle,并且致电QueryString.GetValues("filter"),则会获得包含元素"category:car""category:motorcycle"的数组。然后将每个元素拆分为:等。 No regex needed