Регулярное выражение в шаблоне регулярного выражения ИЛИ в совпадении ИЛИ находите запятые между двумя строками - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу извлечь запятые , из этой строки:

"(""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: Нужно сделать это за один шаг.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Если это для MATLAB, вы не можете получить одно совпадение, которое содержит несмежные символы за один шаг.Однако вместо использования regexp вы можете попробовать использовать regexprep для удаления частей, которые вам не нужны:

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 =

    ',,,,,'

Мое решение не содержит пробелов, которые есть в вашем желаемом решении.Я не мог заставить это работать.

Не могли бы вы рассказать, зачем вам нужен список запятых и какова ваша конечная цель?

0 голосов
/ 03 апреля 2019

Я бы взял двухэтапный подход к этому.

  1. Найдите, что находится между "", и ,"". Вы были близки, но если в Matlab все по-другому, в вашем описании есть 2 положительных взгляда (?=), а не положительный взгляд назад (?<=) и положительный взгляд. Я бы использовал это в Java:

    (?<=["]{2},)[0-9,.\\-]+(?=,["]{2})

Таким образом, перед шаблоном стоит положительный взгляд, затем шаблон (одна или несколько запятых, точки, дефисы и / или числа), а затем положительный взгляд после шаблона. Это дает: 147,55,2,341.920,-4.829,-1

  1. Тогда в этой строке просто сопоставьте запятую , и соберите их все.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...