使用字符串utf8

时间:2015-12-24 10:37:05

标签: java regex utf-8

我有2个字符串:

来自txt文件的字符串1,使用BufferedReader打开使用编码" UTF-8":

Tân_Dậu 1921 – Kỉ_Mão 1999

字符串2是我输入的类型:

Tân_Dậu 1921 - Kỉ_Mão 1999

和我的字符串模式:

[(]?([A-ZTĐẤ][a-záââậầấẹịỉìíợnọúùửỵýỷ]+[_][A-ZDĐẤ][a-záậãâậầấẹuịìíợọúùửỵýỷ]+)?[ ]?((\\d{4})|([?]))[ ]?[-][ ]?(([A-ZĐKẤ][a-záâỉoậầấẹịỉìíợọúùửỵýỷ]+[_][A-ZĐẤ][a-záãâậầấãẹịìíợọúùửỵýỷ]+))?[ ]?(\\d{4}|\\d{2}[)])[ ]?[)]?

我用:

Matcher m = p.matcher(test.trim());
while(m.find())
{
    System.out.println("-->"+m.group());
}

使用' test'是字符串1和2。但只有字符串2匹配。 什么问题以及如何解决它?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

问题是-。你似乎有两个版本。将表达式更改为:[(]?([A-ZTĐẤ][a-záââậầấẹịỉìíợnọúùửỵýỷ]+[_][A-ZDĐẤ][a-záậãâậầấẹuịìíợọúùửỵýỷ]+)?[ ]?((\\d{4})|([?]))[ ]?[-–][ ]?(([A-ZĐKẤ][a-záâỉoậầấẹịỉìíợọúùửỵýỷ]+[_][A-ZĐẤ][a-záãâậầấãẹịìíợọúùửỵýỷ]+))?[ ]?(\\d{4}|\\d{2}[)])[ ]?[)]?应该可以解决问题(示例可用here)。

注意[-]如何更改为[-–]