我要从此字符串中提取逗号,
:
"(""2018-10-15 00:00:00.571913"",147,55,2,341.920,-4.829,-1,""0,0,427799008,307238900,163872717,122358998,115140912,112840222,111386391,109396581,107696294,107176835,106021975,104275830,
但是我不想提取所有逗号,
只有位于"",
和,""
之间的人
我尝试使用https://regexr.com/:
(?="",)(\,)(?=,"")
代替
(?="",)(.*)(?=,"")
但是它不起作用。
此匹配输出应为:
, , , , ,
换句话说,在子字符串"",147,55,2,341.920,-4.829,-1,""
中,我只想提取逗号而不是其他任何内容。
PS:需要一步完成。
答案 0 :(得分:0)
我将采取两步走法。
查找"",
和,""
之间的内容。您已经接近了,但是除非在Matlab中与众不同,否则您的描述(?=)
中有2个正面前瞻,而不是(?<=)
之后有正面前瞻和正面前瞻。我会在Java中使用它:
(?<=["]{2},)[0-9,.\\-]+(?=,["]{2})
因此,在模式之前先看正向,然后是模式(一个或多个逗号,句点,连字符和/或数字),然后在模式后再进行正向预测。这将产生:147,55,2,341.920,-4.829,-1
,
并将它们全部收集起来。答案 1 :(得分:0)
如果是用于MATLAB,则一步之遥就无法获得包含非连续字符的单个匹配项。但是,您可以尝试使用regexprep来删除不需要的部分,而不是使用regexp:
function testFunc()
str = '"(""2018-10-15 00:00:00.571913"",147,55,2,341.920,-4.829,-1,""0,0,427799008,307238900,163872717,122358998,115140912,112840222,111386391,109396581,107696294,107176835,106021975,104275830,';
middlePattern = '(?<=,).*?(?=,)';
beginningPattern = '^[^,]*,';
endPattern = ',".*?$';
exp = [middlePattern '|' beginningPattern '|' endPattern];
str = regexprep(str,exp,'')
>> testFunc
str =
',,,,,'
我的解决方案不包含所需解决方案的空格。我无法解决这个问题。
您能否解释一下为什么要使用逗号列表以及最终目的是什么?