任何人都可以推荐一个符合以下规则的正则表达式:
- 大写或空格
我要匹配的字符串如下所示
LONDON 10 Downing St, London
或这个
NEW YORK 2859 Broadway, New York, NY 10025
当我通过每一行时,我希望能够匹配 LONDON 和 NEW YORK 这两个词。
PS我正在用Java做这个
^
\p{Lu}
[\p{Lu} ]
*
\b
因此,您的正则表达式是
^[\p{Lu} ]*\b
不要忘记将反斜杠加倍以符合 Java 的字符串转义规则:
在 Java 7 中:
Pattern regex = Pattern.compile("^[\\p{Lu} ]*\\b", Pattern.UNICODE_CHARACTER_CLASS);
在 Java 6 及以下版本中:
Pattern regex = Pattern.compile("^[\\p{Lu} ]*(?<=\p{Lu})");
您可以使用此模式:
^[A-Z ]+
这将匹配字符串开头的一个或多个大写拉丁字母或空格。
您可以轻松修改它以避免捕获尾随空格:
^[A-Z ]*[A-Z]
用这个:
^\u+( \u+)*
它匹配多个大写字符,可选地后跟一组(单个空格,更多大写字符)。这将避免总是以空格结尾。