【问题标题】:What's the regex for key=value, delimited by commas?key=value 的正则表达式是什么,用逗号分隔?
【发布时间】:2012-06-19 01:28:57
【问题描述】:

捕获整个键值列表的 Java 正则表达式是什么(在下面的示例中以粗体显示)?

foo bar k0=v0, k1=v1, k2=v2 foo bar

键和值不包含空格字符,,=

我尝试过:(([^\s,=]+=[^\s,=]+),?)+ Regular Expression Test Page for Java,但它给了我个人平等组(k0=v0 等)而不是整个字符串。这是为什么?以及如何解决?

【问题讨论】:

  • 如果键值对到处都是怎么办?单独退货不是更好吗?
  • 我只需要知道这个列表在字符串中出现的位置,而且它只出现在字符串的一个部分。键值本身与我无关。
  • 如果你想知道列表是否存在,测试一个键值对就足够了,不需要测试整个列表。
  • 我还需要知道它的起点和终点。
  • 请在问题中说明你下次做这件事的最终目的。

标签: java regex


【解决方案1】:

您的正则表达式不允许使用空格。如果你希望它也包含空格,你不能摆脱它周围的"foo bar"(它会假设它是键或值的一部分)。如果您只想在逗号后允许空格,请尝试以下操作:

(([^\s,=]+=[^\s,=]+)(?:,\s*)?)+

【讨论】:

    【解决方案2】:

    类似下面的方法会起作用:

    ([^=|^,|^\W]+)=([^,|^\W]+)
    

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多