2014-01-30 2 views
0

Это RegEx существует внутри XSD файлаЯ не уверен, если я интерпретирую это регулярное выражение правильно

[^~|\t\n\r]+(~[^~|\t\n\r]+)?(\|[^~|\t\n\r]+(~[^~|\t\n\r]+)?)* 

Я все еще довольно новый расшифровки регулярных выражений. Я понимаю, что это \ t \ n \ r ссылается на вкладку, новую строку и возврат каретки Я обнаружил, что^внутри [] означает «не» Но мне не хватает тонкостей этого конкретного регулярного выражения.

Может ли оно быть разбито так же?

"[^~|\t\n\r] 
+ 
(~[^~|\t\n\r]+) 
? 
(\|[^~|\t\n\r] 
+ 
(~[^~|\t\n\r]+)?)*" 

Означает ли первый кусок «не |? Или табуляция или новая строка или возврат каретки

Другие разделы кажутся почти то же самое с добавлением или изменением ~ и \

Любой? помощь высоко оценили, спасибо

+0

Да, по существу: 'firstmatch ~ secondoptionalmatch', возможно, повторяется с' '' 'между ними (' \ | 'является литералом' | '). Таким образом, 'aa ~ bb | cc | dd ~ ff | gg' будет соответствовать, например. – Wrikken

+0

Я нашел http://www.regular-expressions.info/, чтобы быть полезным. – iamnotmaynard

ответ

1

Вы правы о \t, \n и \r - это вкладки и линии.

Итак, у вас есть повторяющийся класс символов [^~|\t\n\r]+. Это означает «один или несколько символов, которые могут быть ничем иным, ~, |, \t, \n или \r.

Узор начинается с одной из них.

Затем есть еще один, с приставкой ~ характера , который не обязательно (? делает необязательным и скобки сделать дополнительный бит включают в себя как класс ~ и характер).

затем есть еще один набор скобок с * после него, что мне ans "повторяют ноль или более раз. Этот набор скобок содержит третий экземпляр вашего символьного класса, на этот раз которому предшествует |, а затем еще один дополнительный, которому предшествует ~.

Этот блок с кронштейнами и * в конце - это в основном повторение всего остального рисунка. То, к чему это сводится, представляет собой повторяющийся шаблон строк, разделенных символом |, каждый из которых необязательно подразделяется на два символом разделителя .

1

Есть tools that can sort this out for you:

Breakdown of regex

Что касается полезности этого выражения, это полностью зависит от того, какой вход он подает в ваше приложение.

Смежные вопросы