Я пытался \w+\:(\w+\-?\.?(\d+)?)
но это не правильно
у меня следующий текст
<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>
The end result I want is something like the following
["staticText:HelloWorld", "xmlNode:Node.03","date:yyy-MM-dd","time:HH-mm-ss-fff"]
Можете ли вы использовать упрощенный подход x.Replace(">_<", "\",\"")
плюс обрезку начала/конца?
Попробуйте использовать: <(.*?)> Я не понимаю, зачем вам это нужно в этом конкретном формате: ["staticText:HelloWorld", "xmlNode:Node.03","date:yyy-MM-dd"," время:ЧЧ-мм-сс-фф"]
Вы можете использовать следующее регулярное выражение.
<(.*?)>
Затем посмотрите, как работают группы, чтобы получить результат.
Regex rx = new Regex("<(.*?)>");
string text = "<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>";
MatchCollection matches = rx.Matches(text);
Console.WriteLine(matches.Count);
foreach(Match match in matches){
var groups = match.Groups;
Console.WriteLine(groups[1]);
}
Эта строка должна соответствовать содержимому:
<(.*?)>
Он будет ловить стрелки в конце, которые вам, кажется, не нужны, но вы можете удалить их после слов без регулярного выражения.
Вам следует рассмотреть такой веб-сайт, как https://regexr.com - он помогает экспоненциально в написании регулярных выражений, позволяя вам вставлять свои случаи и смотреть, как это работает с ними.
Соответствует любой строке внутри <>. Надеюсь это поможет.
<(.*?)>
Ваш шаблон не соответствует 3-й и 4-й части данных примера, потому что в этой части \w+\-?\.?(\d+)?
тире и цифры совпадают только один раз и не повторяются.
Для вашего примера данных вы можете использовать класс персонажей[\w.-]+
, чтобы сопоставить часть после двоеточия, чтобы сделать соответствие более широким:
<(\w+\:[\w.-]+)>
Демонстрация регулярных выражений | демонстрация С#
Или, чтобы сделать его более конкретным, укажите шаблон для части Node.03
и для частей года, месяца, даты, часа и т. д., используя повторяющийся шаблон.
<(\w+\:\w+(?:\.\d+|\d+(?:-\d+)+)?)>
Объяснение
<
Матч <
(
Группа захвата
\w+\:\w+
Сопоставьте 1+ словесных символов, :
и 1+ словесных символов(?:
Группа без захвата
\.\d+
Сопоставьте .
и 1+ цифры|
Или\d+(?:-\d+)+
Сопоставьте 1+ цифры и повторите 1+ раз, сопоставив -
и 1+ цифры)?
Закрыть группу без захвата и сделать ее необязательной)
Закрыть группу захвата>
Демонстрация регулярных выражений | Демонстрация С#
Оцените подробный ответ.
Кстати.. stackoverflow.com/questions/1732348/…