【问题标题】:Regex for Java split involving spaces and double quotations涉及空格和双引号的Java拆分正则表达式
【发布时间】:2020-01-21 01:38:42
【问题描述】:

我将使用什么表达式将字符串用双引号内的空格或材料分割(引号将包含在字符串中)?

空格从双引号内分开,我不希望这些空格分开,只是引号外的空格。

我确实在空格和双引号方面取得了成功,但在双引号内的空格却没有。拆分将这些空白解析为子字符串。

这是 Java 正则表达式。例如,这行得通,但“这不行”

谢谢你 丹尼斯

【问题讨论】:

  • 您正在进入合适的扫描仪领域。一定要研究一下词法分析器,然后为你的用例写一个简单的。 RegEx 可能无法满足您的需求。

标签: java regex split


【解决方案1】:

拆分以下正则表达式:

\s*"[^"]*"\s*|\s+

第一个选项(“|”之前)包含:

  • 一系列空格(实际上也是 \n 上的 Tab),可能为空,
  • 双引号(开头),
  • 双引号以外的字符序列,
  • 另一个双引号(关闭),
  • 另一个空格序列。

第二种选择(在“|”之后)只包含一个非空的空格序列。

在第一个替代方案中,\s* 周围的两个都是为了防止像这样的字符串 "xxx yyy" 像对​​待 3 个 separate 拆分标记(之前有一个空格, 带引号的字符串和后面的空格)。

有关工作示例,请参阅https://regex101.com/r/76jaZb/1, 但由于这种模式是为了 splitting (不匹配)实际上看起来 在源字符串的部分匹配项之间。

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2023-03-31
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多