我遇到以下表达式的问题:
String REGEX_Miasto_Dwu_Czlonowe="\D+\s\D+";
Pattern pat_Miasto = Pattern.compile(REGEX_Miasto_Dwu_Czlonowe);
Matcher mat_Miasto_Dwu_Czlonowe = pat_Miasto.matcher(adres);
因为上述模式匹配
"80-227 GDAŃSK DOSTUDZIENKI 666";
"83000 PRUSZCZ GDANSKI UL. TYSIACLECIA 666";
但它只应匹配此表达式:"PRUSZCZ GDANSKI UL. TYSIACLECIA 666";
THX寻求帮助。
答案 0 :(得分:0)
你的regexp遇到了一些问题。
\ D匹配非数字。这是你的意图吗?
\ d + \ S \ d +
因此,您匹配某些非数字,然后是一个空格,然后是一些非数字。
我认为你的表达式匹配的事件或多或少。
这可能是你的正则表达式的解决方案:
^\d+\D+\d+$
如果您希望将第二行与文字匹配,那么只有这一行匹配才能使用:
Matcher.quoteReplacement(String s)
从简单的String构建这种表达式。所有控制角色都可以逃脱。
答案 1 :(得分:0)
您的正则表达式匹配任意数量的非数字\D+
空格\s
,然后是任意数量的非数字。所以它匹配第一个字符串:
80-227 GDAŃSK DOSTUDZIENKI 666
// ^__________\D+_________^^____________\D+_________^
// |
// a space
我想你想要:
[^\s\d]+\s[^\s\d]+
任意数量的非空格/非数字,一个空格,然后是任意数量的非空格/非数字。