gpt4 book ai didi

java - 正则表达式:如何处理空引号

转载 作者:行者123 更新时间:2023-12-02 04:06:13 25 4
gpt4 key购买 nike

我有一个具有以下模式的字符串:

"123 456 789 \"abc def\" \"ghi\" \"jkl\" \"mno\" \"pqr\" stu v 097 \"wx yz\""

我想以这样的方式分割这个字符串:引号外的元素使用“”分割,引号内的元素使用引号分割。我为此目的使用的正则表达式是:

"(['\"])((?:\\\\\\1|.)+?)\\1|([^\\s\"']+)"

生成的输出是:

123, 456, 789, "abc def", "ghi", "jkl", "mno", "pqr", stu, v, 097, "wx yz"

这个输出很好,但问题是如果我有一个空引号,则正则表达式会弄乱输出。例如,让我们从上面的输入字符串中删除 pqr。

"123 456 789 \"abc def\" \"ghi\" \"jkl\" \"mno\" \"\" stu v 097 \"wx yz\""

本例的输出是:

123, 456, 789, "abc def", "ghi", "jkl", "mno", "" stu v 097 ", wx, yz

主要问题是“stu v 097”。所需的输出是:

123, 456, 789, "abc def", "ghi", "jkl", "mno", "", stu, v, 097, "wx yz"

如何通过修改正则表达式来处理空字符串?

最佳答案

这个正则表达式似乎对我有用:

(?:(['"]).*?\1)|(?:[^\s"']+)

作为 Java 字符串,它是:

"(?:(['\"]).*?\\1)|(?:[^\\s\"']+)"

你可以看到它匹配什么here ,只需单击 Java。

关于java - 正则表达式:如何处理空引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com