Простая регулярка для разбиения через двоеточие

melutsk

Client
Joined
Aug 3, 2016
Messages
1,349
Reaction score
1,259
Points
113
Есть данные
423523523:3245345634
надо до : число внести в переменную 1, а после : в переменную 2, как это сделать через регулярку?
 

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Привяжи текст как таблицу, и распределяй ячейки по переменным.
Или в конструкторе регулярок делай регулярку и экшеном обработка текста обработай.
 
  • Thank you
Reactions: melutsk

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Code:
([^:]+):([^:]+)
Групповая регулярка. Номер совпадения выбрать 0. 1 - в первую переменную, 2 - во вторую
 
  • Thank you
Reactions: melutsk

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Code:
([^:]+):([^:]+)
Групповая регулярка. Номер совпадения выбрать 0. 1 - в первую переменную, 2 - во вторую
Хочешь сказать за 1 присест, можно в две переменных спарсить данные?
 
  • Thank you
Reactions: melutsk

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Хочешь сказать за 1 присест, можно в две переменных спарсить данные?
хочу
 
  • Thank you
Reactions: melutsk

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Можешь скрин показать с примером?
Я могу так хоть 20 совпадений все по очереди в переменные загнать?
 
  • Thank you
Reactions: melutsk

one

Client
Joined
Sep 22, 2015
Messages
6,849
Reaction score
1,276
Points
113

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Меня лично смущает выпадающее меню "Номер совпадения" и внизу мы выбираем "Номер совпадения", так что именно делает первое меню?
 
  • Thank you
Reactions: melutsk

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Можешь скрин показать с примером?
Я могу так хоть 20 совпадений все по очереди в переменные загнать?
можешь, если правильно регулярку составишь. Нужно понимать, что это не направление обычных совпадений, а направление групп совпадений
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Меня лично смущает выпадающее меню "Номер совпадения" и внизу мы выбираем "Номер совпадения", так что именно делает первое меню?
0 савпадение - номер совпадния по группе. 1,2 и т.д. - номер совпадения внутри группы. Есть и нулевое, но в нём будет весь текст, найденный ругялркой, а начиная с 1го уже будут групповые значения
 
  • Thank you
Reactions: melutsk and one

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

0 савпадение - номер совпадния по группе. 1,2 и т.д. - номер совпадения внутри группы. Есть и нулевое, но в нём будет весь текст, найденный ругялркой, а начиная с 1го уже будут групповые значения
Очень все запутанно =)
 
  • Thank you
Reactions: melutsk

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Очень все запутанно =)
есть текст
1:2
3:4
5:6

Есть регулярка
Code:
(\d+):(\d+)
Сама по себе такая регулярка найдёт 3 значения
[0] 1:2
[1] 3:4
[2] 5:6

Выделенные номера - номера совпадений. Тут всё просто. Но в регулярках есть скобки, а значит будут записанны ещё группы. Нулевое совпадение по группе - всегда вся строка, найденная регуляркой. Дальше уже сами группы в скобках
Таким образом для строки, например, 3:4 группы будут выглядеть так
[0] 3:4
[1] 3
[2] 4

Имеет что-то типа двумерного массива. Если объединить индексаций, где первое число - индекс совпадение, второе - индекс группы, то получим
[0][0] 1:2
[0][1] 1
[0][2] 2

[1][0] 3:4
[1][1] 3
[1][2] 4

[2][0] 5:6
[2][1] 5
[2][2] 6

как-то так
 

Шива

Client
Joined
Feb 5, 2018
Messages
1,089
Reaction score
341
Points
83
Столько сообщений и никто не сказал про сплит (((((
 
  • Thank you
Reactions: bad robot

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
20,936
Reaction score
9,330
Points
113
Есть данные
423523523:3245345634
надо до : число внести в переменную 1, а после : в переменную 2, как это сделать через регулярку?
Вот такой регуляркой иногда пользуюсь:
Code:
((?<=(^|:|;)).*?(?=(:|;|$|\r\n)))
Это универсальная регулярка для двоеточия и точки-с-запятой в роли разделителя.
Работает через два кубика Обработка текста, в первом кубике - 0-ое совпадение, во втором 1-ое..
Достоинство такого способа, что можно разбирать строки с бо'льшим, чем два, кол-вом данных между разделителями.
Еще нравится с таблицей вариант, где разбор по переменным, тоже пользуюсь..
 
Last edited:

one

Client
Joined
Sep 22, 2015
Messages
6,849
Reaction score
1,276
Points
113

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
Вот такой регуляркой иногда пользуюсь:
Code:
((?<=(^|:|;)).*?(?=(:|;|$|\r\n)))
Это универсальная регулярка для двоеточия и точки-с-запятой в роли разделителя.
Работает через два кубика Обработка текста, в первом кубике - 0-ое совпадение, во втором 1-ое..
Достоинство такого способа, что можно разбирать строки с бо'льшим, чем два, кол-вом данных между разделителями.
Еще нравится с таблицей вариант, где разбор по переменным, тоже пользуюсь..
Скажите пожалуйста, а как в таком случае быть?

У меня в пемеренной лежит вот такой текст -

C:\folder\img\1.jpg;C:\folder\img\01017(2).jpg;C:\folder\img\03-lovlya-yazya-na-udochku.jpg;C:\folder\img\0626-fish-dlya-rybalki.jpg;C:\folder\img\0627-dlya-rybalki.jpg
То есть в строчку прописаны 5 ссылок на картинки, разделены они ";"
Как сделать регулярку, что бы из этих ссылок вырезались вот эти данные И сразу же перекидывались в 5 разных переменных? собственно сама регулярка то вот - (?<=folder).*?jpg


мне эти 5 строк, надо раскидать в 5 переменных так же как тут у @doc, но у меня только одно совпадение записывается =(

 

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
20,936
Reaction score
9,330
Points
113
Скажите пожалуйста, а как в таком случае быть?

У меня в пемеренной лежит вот такой текст -

C:\folder\img\1.jpg;C:\folder\img\01017(2).jpg;C:\folder\img\03-lovlya-yazya-na-udochku.jpg;C:\folder\img\0626-fish-dlya-rybalki.jpg;C:\folder\img\0627-dlya-rybalki.jpg
То есть в строчку прописаны 5 ссылок на картинки, разделены они ";"
Как сделать регулярку, что бы из этих ссылок вырезались вот эти данные И сразу же перекидывались в 5 разных переменных? собственно сама регулярка то вот - (?<=folder).*?jpg


мне эти 5 строк, надо раскидать в 5 переменных так же как тут у @doc, но у меня только одно совпадение записывается =(

Можно записать в список и брать в цикле, по мере необходимости.
Так ли уж необходимо их все в разные переменные записывать?
 
  • Thank you
Reactions: JanCarlo

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
Можно записать в список и брать в цикле, по мере необходимости.
Так ли уж необходимо их все в разные переменные записывать?
Циклом сложно, нужно именно в разные переменные записывать что бы потом отображать все эти 50 картинок в документе. Есть список где 50 ссылок на картинки, и надо ссылки (предварительно регуляркой обрезав до \img\name.jpg) на эти картинки записать в 50 разных переменных, циклом по моему не получиться в разные переменные записывать
 

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
Согласен, получается лес лесной. Самый простой вариант это в два кубика решить эту задачу, первый - сишарп, регуляркой находит все значения и раскидывает их по переменным (в каждом списке у меня строго определенное количество ссылок, по этому я точно заранее знаю сколько всего будет регуляркой найдено результатов и соответственно сколько необходимо переменных) , вторым кубиком очищаем из ссылки все ненужное. Но вот я не знаю как код накидать
 

WebBot

Client
Joined
Apr 4, 2015
Messages
1,790
Reaction score
1,397
Points
113
C#:
var x = project.Variables["str"].Value.Split(':');
project.Variables["res1"].Value = x[0];
project.Variables["res2"].Value = x[1];
в переменной str должна быть строка вида xxxxxx:yyyyyyy
так же должно быть 2 переменные res1 и res2 ... в первой окажется xxxxxxx, а во второй yyyyyy
 
  • Thank you
Reactions: Igorii and JanCarlo

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
C#:
var x = project.Variables["str"].Value.Split(':');
project.Variables["res1"].Value = x[0];
project.Variables["res2"].Value = x[1];
в переменной str должна быть строка вида xxxxxx:yyyyyyy
так же должно быть 2 переменные res1 и res2 ... в первой окажется xxxxxxx, а во второй yyyyyy
ну и соответственно если в переменной aaa:bbb:ccc то и в три переменные все запишется? а как добавить регулярку к этому коду, что бы регуляркой из xxxxx:yyyyy:ssss определенный кусок вырезался и так же
в переменные записывался? мне собственно только это и надо было :-)
 

WebBot

Client
Joined
Apr 4, 2015
Messages
1,790
Reaction score
1,397
Points
113
ну и соответственно если в переменной aaa:bbb:ccc то и в три переменные все запишется?
если добавить
C#:
project.Variables["res3"].Value = x[2];
то да

а как добавить регулярку к этому коду, что бы регуляркой из xxxxx:yyyyy:ssss определенный кусок вырезался и так же
в переменные записывался?
в зависимости от необходимого куска может быть разная регулярка
 
  • Thank you
Reactions: JanCarlo

GrafSpell

Client
Joined
Jul 14, 2017
Messages
30
Reaction score
11
Points
8
Согласен, получается лес лесной. Самый простой вариант это в два кубика решить эту задачу, первый - сишарп, регуляркой находит все значения и раскидывает их по переменным (в каждом списке у меня строго определенное количество ссылок, по этому я точно заранее знаю сколько всего будет регуляркой найдено результатов и соответственно сколько необходимо переменных) , вторым кубиком очищаем из ссылки все ненужное. Но вот я не знаю как код накидать
как вариант вот
C#:
int count = project.Variables["имя_переменной"].Value.Split(':').Length;

if(count > 0)
    for (int i = 0; i < count; i++)
        project.Variables["var" + (i + 1)].Value = Regex.Match(project.Variables["имя_переменной"].Value.Split(':')[i], @"(?<=folder).*?jpg").Value;
на выходе получиться
var1 = \img\1.jpg
var2 = \img\01017(2).jpg
var3 = \img\03-lovlya-yazya-na-udochku.jpg
var4 = \img\0626-fish-dlya-rybalki.jpg
var5 = \img\0627-dlya-rybalki.jpg
 
  • Thank you
Reactions: JanCarlo

orka13

Client
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
Скажите пожалуйста, а как в таком случае быть?

У меня в пемеренной лежит вот такой текст -

C:\folder\img\1.jpg;C:\folder\img\01017(2).jpg;C:\folder\img\03-lovlya-yazya-na-udochku.jpg;C:\folder\img\0626-fish-dlya-rybalki.jpg;C:\folder\img\0627-dlya-rybalki.jpg
То есть в строчку прописаны 5 ссылок на картинки, разделены они ";"
Как сделать регулярку, что бы из этих ссылок вырезались вот эти данные И сразу же перекидывались в 5 разных переменных? собственно сама регулярка то вот - (?<=folder).*?jpg


мне эти 5 строк, надо раскидать в 5 переменных так же как тут у @doc, но у меня только одно совпадение записывается =(

Потому что если как у Дока, то регулярка должна всю строку находить а не нужный участок. А уже то что в круглых скобках регулярки будет находить нужные фрагменты:
Code:
[^;]+\\folder([^;]+\.jpg);[^;]+\\folder([^;]+\.jpg);[^;]+\\folder([^;]+\.jpg);[^;]+\\folder([^;]+\.jpg);[^;]+\\folder([^;]+\.jpg)
reg.png
 
  • Thank you
Reactions: JanCarlo

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
@orka13
@GrafSpell
@WebBot
@sergodjan66
Спасибо ребят, вы очень помогли, все получилось что надо. Остался последний вопрос
Есть строка -
C:/Doorway/img/aec609402220fabdb3f74b33f760334c.jpg;C:/Doorway/img/altrusim-afticifl.jpg;C:/Doorway/img/b1f31f13-4d0b-4b68-8da9-5a247c2bb94d.jpeg;C:/Doorway/img/b5ac6e21-8594-4a78-b7aa-87c8f0761464.jpg;C:/Doorway/img/b72e1b7e-f540-4d38-a739-96f56354f6d4.jpg;C:/Doorway/img/banner-horizontal.jpg;C:/Doorway/img/banner.jpg;C:/Doorway/img/c4077ae103e839465093026503f8879b.jpg;C:/Doorway/img/c423a386-f52e-4f14-aa86-e913eab85e97(1).jpg;C:/Doorway/img/c423a386-f52e-4f14-aa86-e913eab85e97.jpg;C:/Doorway/img/ca66d3b7-b4b4-463e-8535-f3e39b13c732.jpeg;C:/Doorway/img/chris-evola.jpg;C:/Doorway/img/customize-fishing-twitching-lures-rechargeable-led-hard-baits-iscas-minnow-jerkbait.jpg;C:/Doorway/img/d1zyomfwwaipde4.jpg;C:/Doorway/img/d6x-twdxkaigkar.jpg;C:/Doorway/img/d7z2spdxoaaqkps.jpg;C:/Doorway/img/d8b1dd425898d56ec37e63e6bca48bba.jpg;C:/Doorway/img/deqxhr1v0pkkwrzkirypnutzliiw4uncuwxfo_mlmxpkiwmtmycun1tjfr6d3qeg.jpg;C:/Doorway/img/dlya-kakikh-ryb-podkhodit-fish-megabomb.jpg;C:/Doorway/img/dqb1q1zwkaavlv_.jpg
вот этой регуляркой - (?<=Doorway).*?jpg я получил 18 результатов и все с расширениями jpg - вот как тут


, вопрос - как в одну регулярку добавить 2 расширения jpg и jpeg? так как этой регуляркой я потерял считай сразу 2 ссылки на 2 картинки. вернее даже 4 получается. Не охото делать перебор строк с заменами, громоздить лишние кубы :D
у меня есть списки со строго заданным количеством картинок, 5-10-15-20-25, нужно регуляркой получить именно все 5-10-15-20-25 картинок, но форматы картинок иногда бывают jpg и jpeg

Заранее спасибо
 

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
20,936
Reaction score
9,330
Points
113
как в одну регулярку добавить 2 расширения jpg и jpeg?
Регулярка:
(?<=Doorway).*?(jpg|jpeg)
 
  • Thank you
Reactions: JanCarlo

JanCarlo

Client
Joined
Mar 4, 2018
Messages
363
Reaction score
40
Points
28
Регулярка:
(?<=Doorway).*?(jpg|jpeg)
Огненный огонь! Спасибо, а я пробовал в скобки ставить и через ; и , :D
 

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
20,936
Reaction score
9,330
Points
113
Огненный огонь! Спасибо, а я пробовал в скобки ставить и через ; и , :D
Вертикальная черта "|" означает логическое "или".
 
  • Thank you
Reactions: JanCarlo

ukrainec2014

Client
Joined
May 12, 2017
Messages
351
Reaction score
52
Points
28
Вертикальная черта "|" означает логическое "или".
а если поставить & что что оно по идее должно найти?
 
Joined
Dec 8, 2020
Messages
9
Reaction score
0
Points
1
а если поставить & что что оно по идее должно найти?
И первый вариант и второй. То есть по сути ничего не поменяется от первоначального результата.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)