Имам прост модел за съвпадение с Regex:
{tag:value=text}
tag
, value
и text
са частите, които искам да заснема. Номерът е, че value
не е задължително (както и литерала ":" преди)
ето няколко примера:
{tag:value=text}
{tag=text}
{tag:=text}
Първият ред трябва да има "tag" в групата за улавяне на "tag", "value" в групата за улавяне "value" и "text" в групата за улавяне на текст. Другите два реда не трябва да имат никаква група за улавяне на "стойност" (или може да е празна)
Опитах вариации около следния регулярен израз:
{(?<tag>.*):(?<value>.*)?=(?<text>.*)}
Това работи на проби 1 и 3, но не и на втората.
Може да има произволен брой съвпадения в даден текст и искам да ги хвана всичките.
редактиране: Това е извадка от данни, които се опитвам да съпоставя:
Progress: {progress:p1=10%}
Planned duration: {time=10m}
Actors output: {actor:actor1=<nothing to say>}, {actor:actor2=<nothing to say>}
Scene comments: {display=This is a sample scene}
(tag)(?>:?(value)?=(text))
тук: debuggex.com/r/KPZ6wSqLoGGPRVnK ако е така ще го направя добавете като отговор - person Jorge Campos   schedule 04.11.2015(?<tag>.+)(?>:?(?<value>.+)?=(?<text>.+))
Разбрах, че... - person Jorge Campos   schedule 04.11.2015{tag=text}
или{tag:value=text}
, а реални данни, които съдържат нещо отляво на=
и нещо отдясно, с незадължителна стойност, разделена с:
. Или наистина буквално съпоставяте{tag=text}
?) - person Ken White   schedule 04.11.2015