首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >string.replaceAll java不能与lookaround正则表达式一起工作?

string.replaceAll java不能与lookaround正则表达式一起工作?
EN

Stack Overflow用户
提问于 2012-07-17 16:31:10
回答 2查看 347关注 0票数 1

我有一个这样的json字符串:

代码语言:javascript
复制
string = "{name={first=sam, last=vo}, hobbies={hobby1=football, hobby2=swimming}}"

我想删除"name=“和"hobbies=",这样我就可以使用这个模式:\w*\=(?={) ->tested using editPadPro

但是,当我在java中使用全部替换时:

代码语言:javascript
复制
String pattern = "\\w*\\=(?={)";
String removedParent = string.replaceAll(pattern, "");

我收到了这个错误消息

代码语言:javascript
复制
"Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 7
\w*\=(?={)"

你能给我一些建议来完成这项工作吗?

致以敬意,

相同的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 16:36:02

问题在于,{字符是正则表达式语法中的一个特殊字符,它表示一个数量(例如,\d{2}表示2位数)。在本例中,您希望匹配文字{,这意味着需要对{字符进行转义,因此需要将正则表达式更改为:"\\w*\\=(?=\\{)";

对我来说,这产生了:

{{first=sam,last=vo},{hobby1=football,hobby2=swimming}}

票数 4
EN

Stack Overflow用户

发布于 2012-07-17 16:39:32

代码语言:javascript
复制
java.util.regex.PatternSyntaxException: Illegal repetition

这是因为你在"\\w*\\=(?={)"中的"{“。"{“和"}”是表示字符重复的特殊字符,您可能知道...

试着像那个"\\w*\\=(?=\\{)"那样逃脱它。由于您正在使用json,请考虑使用JSON-Parser,如下所示:

  • Jackson
  • net.json
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11518744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档