【发布时间】:2016-12-13 01:12:27
【问题描述】:
我需要正则表达式来匹配双引号字符"但如果它前面有反斜杠,即\",则不需要。
我到了[^\\]",但它选择了两个字符:" 和前面的任何字符(\ 除外),我只需要选择" 字符。
我需要从流中解析如下所示的行:
command "string1" "string2" 字符串可以包含空格和转义的双引号。我需要拆分它,以便我得到命令、string1 和 string2 作为数组。
提前致谢
【问题讨论】:
-
由于引号是 Java 字符串分隔符而反斜杠是正则表达式元字符,因此您的问题可能有多种解释。根据您的意思,我认为编辑得更清楚。如果这不正确,请恢复编辑。
-
请注意,这真的闻起来像XY Problem。我猜您正在尝试解析可以包含转义双引号的双引号分隔字符串。由于语法不规则,因此正则表达式不是一个好主意。了解您真正想要完成的工作的背景会有所帮助。
-
你说得对,我编辑了我的问题
-
您的文本是否也可以包含
\?如果是的话,这个\是否也应该像\"一样用\\转义?如果是,那么您有潜在的问题,因为对于像c:\\path\\"foo\"bar"这样的数据,第一个"没有被转义,但在它之前已经转义了\\,只有第二个"被转义。正则表达式在这里看起来不像是正确的工具,它看起来像是解析器的工作。