我是正则表达式的新手,所以为愚蠢的问题道歉;)
"Flat 3a Butterfly Street"
中,我需要确定该字符串包含3a
。"-"
的单词。答案 0 :(得分:4)
你的问题不是很明确,但我会写出我所理解的内容。如果您想查找每个数字后跟一个字母,您可以执行以下操作:
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-”。
您可以参考this site开始了解有关正则表达式的更多信息。