ホームページ > Java > &#&チュートリアル > 正規表現を使用して引用符で囲まれたセグメントを保持しながら文字列をスペースで分割するにはどうすればよいですか?

正規表現を使用して引用符で囲まれたセグメントを保持しながら文字列をスペースで分割するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-30 09:54:10
オリジナル
344 人が閲覧しました

How to Split Strings by Spaces While Preserving Quoted Segments Using Regular Expressions?

引用符で囲まれたセグメントを除くスペースを含む文字列の分割

正規表現の領域において、引用符で囲まれたセグメントを保持しながら文字列をスペースで分割するタスク初心者ユーザーにとっては気が遠くなるかもしれません。この課題に対処するために、私たちは入力文字列をその構成要素に正確に分離する堅牢なソリューションを模索しています。

ここで提供される文字列の例は、スペースで単語が区切られているが、一重引用符または二重引用符のセグメント内では区切られていない特定のケースを示しています。目的の出力では、引用符で囲まれたこれらのセグメントが保持され、「will be」や「正規表現」などのフレーズがそのまま残ることが保証されます。

このタスクに適した正規表現は、驚くほど簡単です。

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

この式を分解すると、

  • [^s"'] : スペース、引用符、
  • "([^"]*)": 二重引用符で囲まれた文字列と一致し、2 番目のキャプチャ グループ内の内容をキャプチャします。
  • '([^']*)' : 一重引用符で囲まれた文字列と一致し、3 番目のキャプチャ グループ内の内容をキャプチャします。

Java でこの式を利用するには、次の式を使用できます。 code:

List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Add double-quoted string without the quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Add single-quoted string without the quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Add unquoted word
        matchList.add(regexMatcher.group());
    }
}
ログイン後にコピー

このコードは、入力文字列を反復処理して、引用符で囲まれたセグメントと引用符で囲まれていないセグメントをキャプチャし、分割された要素のリストを生成します。あるいは、より単純なバージョンを使用することもできます。

List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}
ログイン後にコピー

この簡略化されたバージョンには、リストに引用符で囲まれた要素と引用符で囲まれていない要素の両方が含まれています。

以上が正規表現を使用して引用符で囲まれたセグメントを保持しながら文字列をスペースで分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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