你的问题不太清楚,但我会写下我所理解的。如果您想查找后面跟着字母的每个数字,您可以执行以下操作:
String regEx = "\\d[a-zA-Z]";
String s= "Flat 3a Butterfly Street";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
如果字符串是“Flat 123a Butterfly Street”,那么上面的答案仍然会再次返回“3a”。如果您喜欢“123a”,那么您可以将正则表达式更改为
String regEx = "\\d+[a-zA-Z]";
这样你就可以检索所有数字。如果目标字符串中也可能存在负号,则正则表达式可能会变为:
String regEx = "-?\\d+[a-zA-Z]";
关于你的第二个问题,你应该匹配除空格(正则表达式中的\s)之外的任何字符,直到找到“-”,然后你将再次匹配除空格之外的任何字符以获得整个单词。您可以尝试以下操作:
String regEx = "([^\\s]*)-([^\\s]*)";
String s= "Fla-t 3-a Butte -rfl-y Street-";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
以下示例可能会返回单词“Fla-t”、“3-a”、“-rfly-f”、“Street-”。
您可以参考这个网站 http://www.vogella.com/tutorials/JavaRegularExpressions/article.html开始学习更多关于正则表达式的知识。