我有一个文本文件,其中包含一些unicode字符值,如
"{"\u0985\u0982\u09b6\u0998\u099f\u09bf\u09a4","\u0985\u0982\u09b6\u09be\u0982\u09b6\u09bf","\u0985\u0982\u09b6\u09be\u0999\u09cd\u0995\u09bf\u09a4","\u0985\u0982\u09b6\u09be\u09a6\u09bf","\u0985\u0982\u09b6\u09be\u09a8\u09cb"}"
我试图在java中使用Pattern类来匹配和分组引号内的值,但是找不到任何匹配。
Pattern p = Pattern.compile("\"(\\[u]{1}\\w+)+\"");
我实际上愿意找出我给定的正则表达式中的技术错误。
答案 0 :(得分:1)
尝试更像这样的事情:
Pattern p = Pattern.compile("\"(\\\\u[0-9a-f]{4})+\"");
为了匹配字符串\u
,您需要正则表达式\\u
,并将该正则表达式表示为Java字符串文字表示\\\\u
。在你之后必须有四个十六进制数字。
答案 1 :(得分:0)
首先,这一位[u]{1}
表示您只希望匹配列表中的值一次,因此您只需将其替换为u
一旦完成,你的正则表达式想要匹配引号,斜杠,然后是u
,然后是另一个斜杠,然后是一个或多个w
,然后是斜杠。它匹配w
而不是单词字符,因为你之前有太多的斜杠。
快乐的编码!
修改强>
尝试使用\\
替换u
之前的\\\\
。 \u
在某些正则表达式中无效,所以当你输入一个Java字符串时,它可能会变成\u
,打破正则表达式