Существует, несомненно, лучший способ сделать это, но это то, как мои требования требуют от меня этого.Regex найти аргументы в тексте
Я создаю форму поиска для своего веб-приложения. Я хочу использовать тегированный поиск. Поэтому я использую регулярное выражение, чтобы заставить его работать.
Итак, у меня есть строка поиска: 'c: john customer: 15478' Регулярное выражение должно найти тег (c :) и аргумент (john), сбросить тег и дать мне аргумент - и он должен сделать это для всех экземпляров тега и их аргументов. Регулярное выражение у меня близко, но оно работает неправильно. Он не захватывает каждый аргумент или не сбрасывает теги согласованным образом. Итак, вопрос: что не так с моим регулярным выражением, которое необходимо исправить для достижения правильных результатов?
В настоящее время он находит первый тег, захватывает свой аргумент и все остальное после него. Мне нужно, чтобы он остановил матч после того, как он нашел аргумент. т.е. в случае, указанном выше, он будет соответствовать клиенту john: 15478
Возможно, лучший вопрос заключается в том, как заставить регулярное выражение VB возвращать все между первым двоеточием и началом следующего тега (за которым следует другой двоеточие) или в противном случае прекратить сопоставление в начале следующего тега?
Regex:
(?<=({0}({1})??:)+?)(\S+\s*\S*)(?=\s+?\b\w+:.+?)??
{0}
и {1}
представляют собой вызов string.Format, используя строку, скажем, Customer (но это может быть что угодно), чтобы определить метку. {0}
- первый символ, а остальные символы - {1}
. Это регулярное выражение будет соответствовать всем, что существует за тегом, включая другой тег и его аргумент, если он существует. Таким образом, для строки
"c:5401 4664 c:john smith p:joam d:domain.com p:1548 c:215-548-5487 d:""192.168.0.1"""
Спички бы
'5401 4664, john smith, 215-548-5487 d:"192.168.0.1"'
'domain.com p:1548, "192.168.0.1"'
'joam d:domain.com, 1548 c:215-548-5487'
дал теги я определил. Регулярное выражение не может остановить его соответствие в начале следующего тега.
Вы пробовали: http://www.regexr.com/? – SQLMason
да, и это основано на javascript. Это для приложения VB. –