在正则表达式中,可以使用空格分割字符串,同时在带引号的部分中保留空格。以下是实现此目的的方法:
要解决原始表达式 (?!") 中的问题(在引号前按空格进行分割),请考虑以下正则表达式:
[^\s"']+|"([^"]*)"|'([^']*)'
此表达式捕获三个模式:
要分割字符串,您可以使用 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()); } }
此代码构建一个字符串列表,从引用的单词中删除引号并保留其中的空格。
以上是如何使用正则表达式按空格分割字符串,同时保留引用的部分?的详细内容。更多信息请关注PHP中文网其他相关文章!