我有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匹配。 什么问题以及如何解决它?谢谢你的帮助。
答案 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)。
注意[-]
如何更改为[-–]
。