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

もう1つの方法は次のとおりです。

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