2

基本的に、スペース/句読点/数字を削除したい大きな文字列がたくさんあります。単語が欲しいだけです。

これは私のコードです:

String str = "hughes/conserdyne corp, unit <hughes capital corp> made bear stearns <bsc> exclusive investment banker develop market 2,188,933 financing design installation micro-utility systems municipalities. company systems self-contained electrical generating facilities alternate power sources, photovoltaic cells, replace public utility power sources.";
        String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");
        for (int i = 0; i < arr.length; i++) {
                    if(arr[i] != null)
                 System.out.println(arr[i]);
        }

これは私が得る出力です:

hughes
conserdyne
corp

unit

lt
hughes
capital
corp

made
bear
stearns

lt
bsc

exclusive
investment
banker
develop
market










financing
design
installation
micro
utility
systems
municipalities

company
systems
self
contained
electrical
generating
facilities
alternate
power
sources

photovoltaic
cells

replace
public
utility
power
sources

ご覧のとおり、コンマや数字があった場所に空白などがたくさんあります。印刷条件の有無にかかわらず、これを取得します。

それでも、arr のすべてのコンテンツを新しい文字列に連結し、それを正規表現 "\s+" で分割すると、機能して正しい出力が生成されます。

では、現在の正規表現の何が問題になっているのでしょうか? どんな助けでも大歓迎です。

4

1 に答える 1

2

+正規表現の最後にを投げることができるはずです:

 String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");

に:

 String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]+");
                                                 // ^-- This guy

前の要素の1つ以上に一致する手段を追加する+と、行に複数の「ブレーク文字」がある場合、それらは単一の区切り文字として扱われ、結果に空の文字列が含まれることはありません。

于 2012-09-05T20:52:51.897 に答える