我有以下字符串:
String str = "{% assign foo = values %}.{{ foo[0] }}."我试着把它编译成一个模式:
Pattern p = Pattern.compile(StringEscapeUtils.escapeJava(str));但是编译失败并出现“非法重复”错误,我猜测这是由于'{‘字符没有被转义。
我怎样才能正确地摆脱它呢?最好不要在每个字符前面添加"\“。
发布于 2011-12-03 01:09:16
你不想要StringEscapeUtils.escapeJava(),你想要Pattern.quote()。
发布于 2011-12-03 01:08:19
使用\进行转义,在Java字符串中,您还必须转义\本身:
String str = "\\{% assign foo = values %\\}.\\{\\{ foo\\[0\\] \\}\\}\\.";要自动转义元字符,可以使用Pattern.quote(str)。
发布于 2011-12-03 01:27:43
大多数PCRE引擎,可以用\Q... \E将正则表达式中的文字文本括起来
其中,\Q是元引用的起始报价,\E是引用元引用的结尾。
它本质上是在\Q和\E之间用'\\$1'全局查找/替换'([.*+?|()\[\]{}^\$\\])'。
https://stackoverflow.com/questions/8359893
复制相似问题