【发布时间】:2016-03-30 04:28:15
【问题描述】:
我正在开发一个需要嵌套字符串的 Java 项目。
对于纯文本格式的输入字符串,如下所示:
这是“一个字符串”,这是“一个\”嵌套\“字符串”
结果必须如下:
[0] This
[1] is
[2] "a string"
[3] and
[4] this
[5] is
[6] "a \"nested\" string"
注意,我希望保留 \" 序列。
我有以下方法:
public static String[] splitKeepingQuotationMarks(String s);
我需要根据给定的规则从给定的s 参数中创建一个字符串数组,而不使用Java 集合框架 或其衍生物。
我不确定如何解决这个问题。
可以制作一个正则表达式来解决这个问题吗?
根据来自 cmets 的问题更新:
- 每个未转义的
"都有其结束的未转义的"(它们是平衡的) - 每个转义字符
\也必须转义,如果我们要创建表示它的文字(要创建表示\的文本,我们需要将其写为\\)。
【问题讨论】:
-
@Turtle:并非总是如此。它也会拆分
nested字符串。 -
即使在空格上分割?
-
这不是常规语言。您需要超越普通正则表达式的功能。 Look-arounds 将正则表达式扩展到常规语言之外,但由于这听起来像是一项学校作业,因此目标可能是让您编写一个词法分析器(词法分析器)。
-
这正是我正在做的 - 编写 Lexer。
-
我不这么认为 - 这个问题没有提到嵌套字符串。