正则表达式用查询字符串中的括号替换点表示法

时间:2017-05-17 14:36:59

标签: regex

基本上我试图替换它:a.b.c=17.5.2017&x.y=z

用这个: a[b][c]=17.5.2017&x[y]=z

我刚才在网上找到了一个正则表达式,它看起来像这样:

[.]([^.]*?)(?=[=.&]|$)

现在,这可行,但它也会替换查询字符串中的值。在我的原始示例中,日期(17.5.2017)被17 [5] [2017]取代,请参见此处:

https://regex101.com/r/5IzNov/1/

我想的是,只有在& 符号之前没有 = 符号时才匹配,或者它是字符串的开头。但是我不知道该怎么做。我认为我需要一个有条件的外观,但这超出了我的意识。

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式进行搜索:

[.]([^.&=]+)(?=[^=&]*=)

并替换使用:

[$1]

RegEx BreakUp:

  • [.] - 匹配文字DOT
  • ([^.&=]+) - 匹配1个或多个不属于[.&=]
  • 的字符
  • (?=[^=&]*=) - 预见我们前面有=而没有遇到&

Updated RegEx Demo