ホームページ > Java > &#&チュートリアル > 引用符内のスペースを無視して文字列をスペースで分割するにはどうすればよいですか?

引用符内のスペースを無視して文字列をスペースで分割するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-16 02:07:09
オリジナル
654 人が閲覧しました

How to Split a String by Spaces, Ignoring Spaces Within Quotes?

引用符で囲まれていないスペースを使用した文字列の分割

このコンテキストでは、スペースを使用して文字列をコンポーネントに分割する解決策を模索します。一重引用符または二重引用符で囲まれないでください。これは、慎重な正規表現の作成を必要とする微妙なタスクです。

効果的な解決策の 1 つは、次の 2 種類の要素をキャプチャする正規表現を構築することです:

  1. 引用符で囲まれた文字列: シーケンス一重引用符または二重引用符で囲まれた文字で構成され、内部には何もありません。引用符。
  2. 引用符で囲まれていない単語: スペースや引用符を含まない文字のシーケンス。

これらの要素と一致させるには、次の正規表現を利用できます:

[^\s"']+|"([^"]*)"|'([^']*)'
ログイン後にコピー

この中でregex:

  • [^\s"'] : 引用符で囲まれていない単語と一致します。
  • |"([^"]*)"|: 引用符を除く、二重引用符で囲まれた文字列と一致します。 .
  • |'([^']*)'|: 単一引用符で囲まれた文字列と一致します。

このソリューションを Java で実装すると、次のコードを使用できます。

Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);

List<String> matchList = new ArrayList<>();
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Double-quoted string without quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Single-quoted string without quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Unquoted word
        matchList.add(regexMatcher.group());
    }
}
ログイン後にコピー

このアプローチは、両方のタイプの要素を適切に捕捉し、特定の問題に対する堅牢なソリューションを提供します。 .

以上が引用符内のスペースを無視して文字列をスペースで分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート