Java中的unicode值与正则表达式的匹配序列
Matching sequence of unicode value in Java with regular expression
我有一个文本文件,其中包含一些 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 中的模式 class 匹配和分组引号内的值,如下所示,但找不到任何匹配项。
Pattern p = Pattern.compile("\"(\[u]{1}\w+)+\"");
我真的很想找出我给定的正则表达式中的技术错误在哪里。
首先,这个位 [u]{1}
意味着你只想匹配列表中的值一次,所以你可以简单地用 u
替换它
完成后,您的正则表达式将匹配一个引号、一个斜线,然后是一个 u
,然后是另一个斜线,然后是一个或多个 w
,然后是一个斜线。它匹配 w
而不是单词字符,因为它前面有太多斜杠。
编码愉快!
编辑
尝试用 \\
替换 u
之前的 \
。 \u
在某些正则表达式中无效,因此当您输入 Java 字符串时,它可能会变成 \u
,从而破坏正则表达式
试试像这样的东西:
Pattern p = Pattern.compile("\"(\\u[0-9a-f]{4})+\"");
为了匹配字符串 \u
,您需要正则表达式 \u
,并将该正则表达式表示为 Java 字符串文字意味着 \\u
。在 u 之后必须恰好有四个十六进制数字。
我有一个文本文件,其中包含一些 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 中的模式 class 匹配和分组引号内的值,如下所示,但找不到任何匹配项。
Pattern p = Pattern.compile("\"(\[u]{1}\w+)+\"");
我真的很想找出我给定的正则表达式中的技术错误在哪里。
首先,这个位 [u]{1}
意味着你只想匹配列表中的值一次,所以你可以简单地用 u
完成后,您的正则表达式将匹配一个引号、一个斜线,然后是一个 u
,然后是另一个斜线,然后是一个或多个 w
,然后是一个斜线。它匹配 w
而不是单词字符,因为它前面有太多斜杠。
编码愉快!
编辑
尝试用 \\
替换 u
之前的 \
。 \u
在某些正则表达式中无效,因此当您输入 Java 字符串时,它可能会变成 \u
,从而破坏正则表达式
试试像这样的东西:
Pattern p = Pattern.compile("\"(\\u[0-9a-f]{4})+\"");
为了匹配字符串 \u
,您需要正则表达式 \u
,并将该正则表达式表示为 Java 字符串文字意味着 \\u
。在 u 之后必须恰好有四个十六进制数字。