当前位置: 首页 > 面试题库 >

用定界符分割带引号的字符串

谷梁英毅
2023-03-14
问题内容

我想用定界符空格分割字符串。但它应该智能地处理带引号的字符串。例如,像这样的字符串

"John Smith" Ted Barry

它应该返回三个字符串John Smith,Ted和Barry。


问题答案:

弄乱它之后,您可以使用Regex来实现。在以下位置运行“全部匹配”的等效项:

((?<=("))[\w ]*(?=("(\s|$))))|((?<!")\w+(?!"))

一个Java示例:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Test
{ 
    public static void main(String[] args)
    {
        String someString = "\"Multiple quote test\" not in quotes \"inside quote\" \"A work in progress\"";
        Pattern p = Pattern.compile("((?<=(\"))[\\w ]*(?=(\"(\\s|$))))|((?<!\")\\w+(?!\"))");
        Matcher m = p.matcher(someString);

        while(m.find()) {
            System.out.println("'" + m.group() + "'");
        }
    }
}

输出:

'Multiple quote test'
'not'
'in'
'quotes'
'inside quote'
'A work in progress'

上面使用示例的正则表达式分解可以在这里查看:

http://regex101.com/r/wM6yT9

综上所述,正则表达式不应成为所有问题的解决方案-
我只是在开心。这个例子有很多边缘情况,例如处理unicode字符,符号等。对于这种任务,最好使用经过验证的真实库。使用此答案之前,请先看看其他答案。



 类似资料:
  • 问题内容: 说我有以下字符串: 我想将其拆分为句子,以便获得以下列表: 如您所见,我想在所有出现的字符串上拆分字符串,而不是在或的任何出现上进行拆分。在这种情况下,Python将无法正常工作,因为它将字符串的每个字符都视为一个单独的定界符,而不是将整个字符串视为一个多字符定界符。有解决此问题的简单方法吗? 问题答案: 为我工作

  • 问题内容: 我有以下格式的字符串: 我试图用来拆分字符串,并在新行上打印每个子字符串。这是我在做什么: 打印: 如何在每个定界符上拆分它? 问题答案: 要使用GNU sed用分隔符分割字符串,请说: 例如,使用用作分隔符进行分割: 或使用非GNU sed: 在这种特殊情况下,您错过了替换后的。因此,仅执行一次。看到: 代表小叶,表示必须在全局范围内(即任何情况下)进行替换。请注意,默认值为1,如果

  • 问题内容: 我有一个用逗号分隔的文件,其中有很多行类似于下面的内容。 引号用于转义表示多个值的定界符逗号。 现在,如何在可能的情况下使用逗号分隔上面的值? 问题答案: 输出:

  • 问题内容: 我知道您可以使用分割字符串。但是我不知道如何用两个定界符分割字符串。 例: 我需要这样的东西: 它的正则表达式是什么? 问题答案: 用这个 :

  • 问题 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的。 解决方案 string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法: >>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>>

  • 问题内容: 如何用定界符分割字符串,但是如果转义了,则不能分割?例如,我有一个字符串: 定界符为,转义定界符为。此外,我想忽略转义的反斜杠,因此中的仍然是分隔符。 因此,使用上面的字符串,结果应该是: 问题答案: 使用黑魔法: 匹配一个反斜杠,后跟一个字符,将其跳过并匹配您的定界符。