2015-10-09 5 views
0

Как я могу вернуть строку ПОСЛЕ соответствия?Возвращаемая строка после матча

Вот моя строка "blahblah/blah/Content/Snapshot/Engines_Running"

Я хочу найти "/Content/Snapshot/" но матч "Engines_Running"

Я попытался это регулярное выражение с другого поста, но это не похоже на работу [\n\r].*/Content/Snapshot/\s*([^\n\r]*)

+0

Аналогичное регулярное выражение - ['. *?/Content/Snapshot/\ s *'] (https://regex101.com/r/lZ1iK4/1) - может использоваться в функции 'Regex.Replace' для удалите весь согласованный текст и сохраните только то, что вы хотите. –

+0

В настоящее время используется визуальный базовый – Skedge

+0

@plsbegental VB.NET, VBA или VB? Они разные. – cybermonkey

ответ

0

Первый [\n\r] требует, чтобы символ новой строки был первым символом входной строки. Это не относится к "blahblah/blah/Content/Snapshot/Engines_Running", поэтому оно не соответствует.

Вы можете использовать подобное регулярное выражение в Regex.Replace методе:

Dim MyRegex As Regex = New Regex(".*?/Content/Snapshot/\s*") 
Console.WriteLine(MyRegex.Replace("blahblah/blah/Content/Snapshot/Engines_Running", "")) 

См IDEONE demo

Или другие регулярки соответствующего подхода с инвертированным символьным классом:

Dim MyRegex As Regex = New Regex("/Content/Snapshot/\s*([^/]*)") 
Console.WriteLine(MyRegex.Match("blahblah/blah/Content/Snapshot/Engines_Running").Groups(1).Value) 

Another demo

.*? шаблон будет соответствовать всем до /Content/Snapshot/.

Не-регулярное выражение способ заключается в использовании LastIndexOf и Substring:

str = str.Substring(str.LastIndexOf("/") + 1) 

another IDEONE demo См

+2

Когда downvoting, пожалуйста выйдите обратная связь. –

0

Вы можете использовать шаблон (?<=prefix)find регулярное выражение, которое соответствует позиции следующего префикса. В вашем случае:

(?<=/Content/Snapshot/)\w+ 

\w+ соответствует слова, содержащие буквы, символы подчеркивания и цифры.

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