Java中unicode值与正则表达式的匹配序列

时间:2015-03-18 20:49:15

标签: java regex unicode

我有一个文本文件,其中包含一些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+)+\"");

Example

我实际上愿意找出我给定的正则表达式中的技术错误。

2 个答案:

答案 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,打破正则表达式