任何人都可以推荐符合以下规则的正则表达式:
我想要匹配的字符串看起来像这样
LONDON 10 Downing St, London
或者
NEW YORK 2859 Broadway, New York, NY 10025
当我传入每一行时,我希望能够匹配LONDON和NEW YORK这两个词。
P.S。我在Java中这样做
答案 0 :(得分:5)
^
\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})");
答案 1 :(得分:1)
您可以使用此模式:
^[A-Z ]+
这将匹配字符串开头的一个或多个大写拉丁字母或空格。
您可以轻松修改此内容以避免捕获尾随空格:
^[A-Z ]*[A-Z]
答案 2 :(得分:-2)
使用此:
^\u+( \u+)*
它匹配许多大写字符,可选地后跟一组(单个空格,更多大写字符)。这将避免总是以空格结束。