使用空格分割字符串的正则表达式
在处理字符串时,我们经常需要将它们分割成单独的单词进行分析或处理。但是,引用文本中的空格(例如“这是一个字符串”)不应被视为分隔符。正则表达式 (Regex) 提供了一种强大的方法来处理此类复杂的拆分任务。
问题:
创建一个 Regex 表达式以使用空格拆分字符串,忽略周围的空格通过单人或双人引号。
示例:
输入:“这是一个当您的‘正则表达式’匹配某些内容时‘将’突出显示的字符串。”
期望的输出:
This is a string that will be highlighted when your regular expression matches something.
答案:
虽然提供的 (?!") 表达式没有正确分割,但可以将一个全面的正则表达式表述如下:
这个表达式有效地捕捉了两种类型elements:
引用的文本:
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); } } }
输出:
This is a string that will be highlighted when your regular expression matches something
这个增强的讨论澄清了问题并提供了更准确和更全面的正则表达式,以及详细的 Java 实现演示其用法。
以上是如何使用正则表达式使用空格分割字符串,同时忽略引号内的空格?的详细内容。更多信息请关注PHP中文网其他相关文章!