首页 > Java > java教程 > 如何使用正则表达式按空格分割字符串,同时保留引用的部分?

如何使用正则表达式按空格分割字符串,同时保留引用的部分?

Susan Sarandon
发布: 2024-12-15 13:22:15
原创
372 人浏览过

How to Split Strings by Spaces While Preserving Quoted Sections Using Regex?

在正则表达式中不使用引号包围时使用空格分割字符串

在正则表达式中,可以使用空格分割字符串,同时在带引号的部分中保留空格。以下是实现此目的的方法:

要解决原始表达式 (?!") 中的问题(在引号前按空格进行分割),请考虑以下正则表达式:

[^\s"']+|"([^"]*)"|'([^']*)'
登录后复制

此表达式捕获三个模式:

  1. 1 :匹配一个或多个非空白、非引号个字符。
  2. "(2*)":匹配双引号字符串,捕获组中不带引号的字符串1.
  3. '(3*)':匹配单引号字符串,捕获第2组中不带引号的字符串。

要分割字符串,您可以使用 Java 代码,例如this:

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());
    }
}
登录后复制

此代码构建一个字符串列表,从引用的单词中删除引号并保留其中的空格。


  1. s"'
  2. "
  3. '

以上是如何使用正则表达式按空格分割字符串,同时保留引用的部分?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板