我有一个带有语法
的编码字符串"encodedProp:encodedValue OPERATOR encodedProp1:encodedValue1"
(操作员可能是AND
,OR
,NOT
,还有N对prop:value
)。
"encodedProp"
,"encodedValue"
,"encodedProp1"
,"encodedValue1"
...是编码的字符串。
我想使用正则表达式将":"
替换为" = "
。此外,":"
左侧的部分应替换为"\"" + left_part + "\""
,右侧部分应替换为"'" + right_part + "'"
。
使用上面的示例,替换后的字符串应为:
"\"encodedProp\" = 'encodedValue' OPERATOR \"encodedProp1\" = 'encodedValue1'"
我必须使用什么表达式?
答案 0 :(得分:0)
好的,我现在出去了,因为问题没有明确定义,但我们试一试。
String resultString = subjectString.replaceAll(
"(?x)( # Match and capture in backreference number 1:\n" +
" [^\\s:]+ # one or more characters except spaces or colons\n" +
") # End of capturing group 1\n" +
": # Match a colon\n" +
"( # Match and capture in backreference number 2:\n" +
" [^\\s:]+ # one or more characters except spaces or colons\n" +
") # End of capturing group 2",
"\"$1\" = '$2'");
这完全忽略了OPERATOR
部分 - 它只是查找包含一个冒号的字符序列,并将它们用单引号或双引号括起来,一路上替换冒号。