ホームページ  >  記事  >  Java  >  Javaで引用符で囲まれた部分文字列を除き、スペースを含む文字列をトークン化する方法

Javaで引用符で囲まれた部分文字列を除き、スペースを含む文字列をトークン化する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-20 15:01:17495ブラウズ

How to Tokenize Strings with Spaces, Excluding Quoted Substrings in Java?

Java で引用符で囲まれた部分文字列を除外し、スペースを含む文字列をトークン化する

スペースに基づいて文字列を区切るのは簡単ですが、文字列の特定の部分が文字列は引用符で囲まれており、単一のトークンとして扱う必要がありますか? Java では、正規表現を使用して、この微妙な分割を実現できます。

このシナリオに対処するには、次のアプローチを使用できます。

String str = "Location \"Welcome  to india\" Bangalore Channai \"IT city\"  Mysore";

List<String> list = new ArrayList<>();
Matcher m = Pattern.compile("([^\"]\S*|\".+?\")\s*").matcher(str);
while (m.find())
    list.add(m.group(1));

ここで使用される正規表現は、文字列を効果的に分割します。トークンは空白に基づいていますが、引用符で囲まれた部分文字列も識別します。これらの引用符で囲まれた部分文字列を単一のトークンとしてキャプチャすることで、「インドへようこそ」のようなフレーズがそのまま残ることを保証できます。

正規表現は次のように理解できます:

  • [^" ]: 二重引用符 (") 以外の任意の文字と一致します。
  • S*: 0 個以上の非空白文字と一致します。
  • |: パイプ記号は OR 条件を示します。
  • ". ?": 二重引用符、その後に 1 つ以上の文字 (空白を含む)、その後に続く二重引用符と一致します。
  • s*: 0 個以上の空白文字と一致します。

これにより、引用句で囲まれた複雑な文字列を効果的に処理できるようになります。結果のリストには、示されている例で必要なように、個々の単語または引用符で囲まれたフレーズを表すトークンが含まれます。

以上がJavaで引用符で囲まれた部分文字列を除き、スペースを含む文字列をトークン化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。