2014-10-09 6 views
0

Я не самый большой специалист в строках Regex, так что я потерял на том, что это один должен найти здесь:Что обнаружит это регулярное выражение?

@"\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)" 

Я пытаюсь получить шаблон уценки будет для приложения. Может ли кто-нибудь помочь мне с какими наборами шаблонов, которые должны найти?

ответ

1

Регулярное выражение, похоже, соответствует форматированию Markdown для гиперссылок. В частности, те, которые прямо указывают ссылку и не используют стиль ссылки.

[linked text](http://www.example.com/hyperlink "optional tooltip") 

Группа захвата 1 содержит связанный текст.
Группа захвата 2 содержит гиперссылку.
Группа захвата 4 содержит дополнительную подсказку.

Ниже приведены примеры гиперссылок на этот вопрос, один с и другой без подсказки:

Источником 2 гиперссылок выше:

- [What will this regular expression detect?](https://stackoverflow.com/questions/26285433/what-will-this-regular-expression-detect "What will this regular expression detect?") (try hovering your mouse over this one) 
- [What will this regular expression detect?](https://stackoverflow.com/questions/26285433/what-will-this-regular-expression-detect) 

Вы можете попробовать сравнить текст примера с вашим регулярным выражением. Это станет ясно после того, как вы увидите результат. Это demo on regex101.

(я написал \[(.*?)\]\((\S+)(\s+("|')(.*?)("|'))?\) в демо выше, так как это видно по двигателю регулярного выражения)

0
\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)

См ICU Руководство пользователя Regular Expressions

Когда \ символы необходимы, чтобы избежать регулярных выражений Операторов они сами должны быть экранированы в строке.

 
\\[  matchs [ 
(  starts capture group 1 
    .*?  matches anything 0 or more times as few times as possible. 
)  ends capture group 1 
\\]  matches ] 
\\(  matches (
(  starts capture group 2 
    \\S+  matches all non-space characters 
)  ends capture group 2 
(  starts capture group 3 
    \\s+  matches one or more space characters 
    (  starts capture group 4 
     \"|\' matches a " or ' 
    )  ends capture group 4 
    (  starts capture group 5 
     .*?  matches anything 0 or more times as few times as possible 
    ))  ends capture group 5 
    (  starts capture group 6 
     \"|\' matches a " or ' 
    )  ends capture group 6 
)?  ends capture group 3 of zero or one matches 
\\)  matches) 
Смежные вопросы