スペースを使用して文字列を分割するための正規表現
文字列を扱うとき、分析や処理のために文字列を個々の単語に分割する必要があることがよくあります。ただし、引用符で囲まれたテキスト内のスペース (例: 「これは文字列です」) は区切り文字とみなされません。正規表現 (Regex) は、このような複雑な分割タスクを処理する強力な方法を提供します。
質問:
囲まれたスペースを無視して、スペースを使用して文字列を分割する正規表現を作成します。シングルまたはダブルでquotes.
例:
入力: 「これは、'正規表現' が何かに一致したときに強調表示される文字列です。」
望ましい出力:
This is a string that will be highlighted when your regular expression matches something.
答え:
(?!") の指定された式は正しく分割されませんが、包括的な正規表現は次のように定式化できます。
この式は、2 つのタイプの要素:
引用符付きテキスト:
Java 実装:
次の Java コードは、この正規表現を適用して、 string:
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexSplitter { public static void main(String[] args) { String subjectString = "This is a string that \"will be\" highlighted when your 'regular expression' matches something."; // Pattern that matches unquoted words, quoted texts, and the capturing groups Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); // List to store the split words List<String> matchList = new ArrayList<>(); while (regexMatcher.find()) { // Check for capturing groups to exclude quotes 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()); } } // Display the split words for (String word : matchList) { System.out.println(word); } } }
Output:
This is a string that will be highlighted when your regular expression matches something
この拡張された説明では問題が明確になり、より正確で包括的な正規表現と詳細な Java 実装が提供されます。その使用法を説明します。
以上が正規表現を使用して引用符内のスペースを無視しながらスペースを使用して文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。