如何以任何顺序检查特定的关键字/值对

时间:2019-02-11 09:05:43

标签: java regex

我想检查字符串String s = "a=182 b=41 c=72"是否仅包含:a b c及其各自的值,但是它们可以随机顺序出现。我该怎么做?

我尝试执行以下操作: (?=a\\=(\\d+))\\s+(?=b\\=(\\d+))\\s+(?=c\\=(\\d+))

2 个答案:

答案 0 :(得分:2)

尝试此正则表达式:

^(?:(\\s*[abc]=)(?!.*\\1)\\d+){3}$

Click for Demo

JAVA Code

说明:

  • ^-断言行的开头
  • (?:(\\s*[abc]=)(?!.*\\1)\\d+){3}
    • (\\s*[abc]=)-匹配0+次出现的空格,后跟abc,后跟=。整个子比赛在第1组中捕获。
    • (?!.*\\1)-否定超前查询,以确保当前匹配项后跟字符串1中任何位置的第1组的内容都不会跟随
    • \\d+-匹配1个以上的数字
    • {3}-为abc
    • 重复子模式3次
  • $-声明行的结尾

答案 1 :(得分:0)

如果您的字符串始终包含空格,则可以将其分成这样的数组

String[] words = s.split(" ");

,然后检查每个数组元素的第一个字符。