1

我有一个这样的字符串:“87 CAMBRIDGE PARK DR”。我使用下面的正则表达式删除了最后一个单词“DR”,但它也删除了单词“PARK”......

下面是我的代码...

String regex = "[ ](?:dr|vi|tes)\\b\\.?"; /* Regular expression format */

String inputString ="87 CAMBRIDGE PARK DR"; /* Input string */

Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputString);
inputString = matcher.replaceAll("");

现在输出是“87 CAMBRIDGE”..

但我需要输出为“87 CAMBRIDGE PARK”。

4

2 回答 2

2

试试下面的正则表达式:

String inputString ="87 CAMBRIDGE PARK DR";
System.out.println(inputString.replaceAll("\\w+$", ""));

输出:

87 剑桥公园

分解上面的正则表达式:

"\\w+$"

- 检查行尾是否后跟几个单词字符。

此外,如果您确定您的最后一个词只能是大写(大写)字母。

System.out.println(inputString.replaceAll("[A-Z]+$", ""));
于 2012-11-27T09:25:22.393 回答
1

您可以按如下方式实现:

String inputString ="87 CAMBRIDGE PARK DR"; /* Input string */
System.out.println(inputString.replaceFirst("\\s+\\w+$", ""));

正则表达式理解

\s+  : one or more white space characters

\w+  : one or more alpha-numerics

$    : the end of the input

另一种方法如下:

String inputString ="87 CAMBRIDGE PARK DR"; /* Input string */
inputString = inputString.substring(0, inputString.lastIndexOf(" ")) + "";
于 2012-11-27T09:25:20.360 回答