-3

先頭/末尾のスペースで囲まれた文字列内のすべての文字列/単語を取得するパターンは何でしょうか。

そのまま使用できますstring.split(" ")が、単一''引用符で囲まれた単語を区切られた単語として返します。したがって、私の目標は、すべての単語を取得し、すべての文字''を 1 つの単語としてカウントすることです。

文字列の例:

word1 word2 'somestring' word7 word91 'word2 with spaces' word5

私の試みたパターン:

\s(.+)\s
4

5 に答える 5

1

キャプチャ グループを使用する場合は、おそらくこれを使用できます。

(\\w+)|'([^']+)'

単語に英数字が含まれている場合。

regex101 デモ(ここで二重エスケープする必要はありませんが、Java では二重エスケープする必要があることに注意してください)

編集:コメントに従って、二重一重引用符をエスケープするには、次の''正規表現を使用できます。

'((?:[^']|'')+)'|(\\S+)

\\w+また、\\S+英数字だけでなく、他の文字と一致するように変更しました。

于 2013-09-02T06:36:01.497 に答える
0

次のように、\s または ' の代わりに単語境界 (\b) にゼロ幅アサーションを使用します。

\b(\w+)\b

これは、単語境界で囲まれた 1 つ以上の単語文字のすべての実行に一致します。単語の境界は、単語と単語以外の文字の間で発生し、スペースとアポストロフィは、文字列の先頭と末尾と同様に、両方とも単語以外の文字と見なされます。

正規表現の単語境界の優れた説明は次のとおりです。 http://www.regular-expressions.info/wordboundaries.html

于 2013-09-02T06:57:57.437 に答える
0

これを試して:

str.split(" (?=(('[^']*){2})*[^']*)");

これは、偶数の引用符が続くスペースで分割されます。

于 2013-09-02T06:59:59.853 に答える