【发布时间】:2015-05-30 17:13:50
【问题描述】:
我有这个正则表达式:(?<=")(?:\\.|[^"\\])*(?=")
它匹配引号内的每个字符并排除引号本身。
当我尝试使用这样的字符串时:
"one","two","three"
也匹配逗号,所以匹配结果如下:
one
,
two
,
three
有没有办法修改正则表达式以使其排除那些逗号?也就是说,使得输出为:
one
two
three
我需要在正则表达式中排除这些引号,并且不要在匹配结果中包含逗号。
这是我的大正则表达式:
((0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.\d\d\d\d)|(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])|"((?:\\.|[^"\\])*)"
第一部分匹配日期:dd.mm.yyyy
((0[1-9]|[12][0-9]|3[01]).(0[1-9]|1[012]).\d\d\d\d)
第二部分匹配时间:hh:mm:ss
(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0 -9])
最后一个应该匹配引号之间的所有字符:
"((?:\.|[^"\])*)"
但正则表达式的最后一部分不能以不排除引号的方式工作。而且,由于某种原因,它会删除用引号括起来的字符串中的所有空格。
输入是带有类似字符串的文本文件:
"AK Pz 310u PI-13-5","23.02.2015","07:45:00","23.02.2015","09:20:00","False","True","23.02.2015","07:40:00","2","Common","AK Pz 310u PI-13-5","Common"
预期的输出是引号中的值数组(当然,没有逗号和引号本身)。我使用这么大的正则表达式来匹配日期和时间的原因是如果它们错了就不应该匹配它们。
【问题讨论】: