0

Javaのメソッドを使用して、useDelimiterを除くすべての非文字を無視してい-ます。これは、-のような単語をバインドするために使用されるためです"three-legged"。問題は、--単語の前後のテキストで数回発生することです。だから私はすべての出現を無視したいのですが--、そうではありません-

これまでの正規表現パターンは次のようになります。useDelimiter("[[^a-zA-Z&&[^'-]&&\\s]+");

編集:解決しました!これは私がやったことです: useDelimiter("[[^a-zA-Z&&[^'&&[^-{1}]]]\\s]+"); - この正規表現の改善は大歓迎です。

ダブル編集 - 解決しませんでした。しかし、ジェリーは正しい答えに対する彼の応答を見ました

4

2 に答える 2

1

あなたの正規表現は少し奇妙だと思います。交差自体は必要ありません (欠落している を修正した後]):

[[^a-zA-Z]&&[^'-]&&\\s]

と の交点は[^a-zA-Z][^'-]同じ[^a-zA-Z'-]で、これと の交点\\sは のみを与え\\sます。

多分あなたは次のようなことを意味します:

useDelimiter("[^a-zA-Z'-[\\s]]+");

--次に、正規表現に基づいて構築する場合、代替と非キャプチャ グループを使用して追加できます。

useDelimiter("(?:[^a-zA-Z'-[\\s]]|--)+");

文字列の例:

Hello! World! Seems that... -- Hey! That's my three-legged table!

次のように分割されます。

Hello
World
Seems
that
Hey
That's
my
three-legged
table

イデオンデモ

編集:現在の正規表現の変更は次のようになります。

(?:[[^a-zA-Z&&[^'&&[^-]]]\\s]|--)+
于 2013-10-12T17:41:31.437 に答える