如何使用正则表达式替换编码字符串中的:字符?

时间:2012-05-15 12:23:07

标签: java regex

我有一个带有语法

的编码字符串
"encodedProp:encodedValue OPERATOR encodedProp1:encodedValue1"

(操作员可能是ANDORNOT,还有N对prop:value)。

"encodedProp""encodedValue""encodedProp1""encodedValue1" ...是编码的字符串。

我想使用正则表达式将":"替换为" = "。此外,":"左侧的部分应替换为"\"" + left_part + "\"",右侧部分应替换为"'" + right_part + "'"

使用上面的示例,替换后的字符串应为:

"\"encodedProp\" = 'encodedValue' OPERATOR \"encodedProp1\" = 'encodedValue1'"

我必须使用什么表达式?

1 个答案:

答案 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部分 - 它只是查找包含一个冒号的字符序列,并将它们用单引号或双引号括起来,一路上替换冒号。