正则表达式查找数字后跟字母

时间:2016-12-10 07:05:45

标签: java regex

我是正则表达式的新手,所以为愚蠢的问题道歉;)

  1. 如何识别字符串是否包含数字后跟字母?例如,在此地址"Flat 3a Butterfly Street"中,我需要确定该字符串包含3a
  2. 我还需要确定字符串是否包含带有"-"的单词。

1 个答案:

答案 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开始了解有关正则表达式的更多信息。