Как заставить Regex остановить поиск после «Target This»?regex синтаксис stop search
HeaderText="Target This" AnotherAttribute="Getting Picked Up"
Это то, что я пытался
var match = Regex.Match(string1, @"(?<=HeaderText=\").*(?=\")");
Как заставить Regex остановить поиск после «Target This»?regex синтаксис stop search
HeaderText="Target This" AnotherAttribute="Getting Picked Up"
Это то, что я пытался
var match = Regex.Match(string1, @"(?<=HeaderText=\").*(?=\")");
Квантификатор *
является стремится, что означает, что он будет потреблять столько символов, как это может, все еще получая соответствие. Вы хотите ленивый квантор, *?
.
Как и в сторону, а не с помощью просмотровых вокруг выражения, как вы сделали здесь, вы можете найти его в целом проще в использовании, захватив группы:
var match = Regex.Match(string1, "HeaderText=\"(.*?)\"");
^^these make a capturing group
Теперь match
соответствует все это, но match.Groups[1]
- это просто значение в кавычках.
+1. Хорошая идея с захватом группы. 'match.Groups [0]' - полное совпадение, поэтому первая явная группа - это группа 1. –
Plain шаблон регулярного выражения
(?<=HeaderText=").*?(?=")
или в виде строки
string pattern = "(?<=HeaderText=\").*?(?=\")";
или используя дословный строку
string pattern = @"(?<=HeaderText="").*?(?="")";
Трюк - знак вопроса после .*
. Это означает «как можно меньше», заставляя его останавливаться после первых котировок, которые он встречает.
Обратите внимание, что стенографические строки (введенные с @
) не распознают обратную косую черту \
как символ эвакуации. Выбери двойные кавычки, удвоив их.
Примечание для других заинтересованных в регулярных выражениях: Шаблон поиска, используемый находит постион между префиксом и суффиксом:
(?<=prefix)find(?=suffix)
Попробуйте это:
var match = Regex.Match(string1, "HeaderText=\"([^\"]+)");
var val = match.Groups[1].Value; //Target This
UPDATE если есть возможности иметь двойные кавычки в цель, изменить регулярное выражение:
HeaderText=\"(.+?)\"\\s+\\w
Примечание: это не правильный способ сделать это, если это XML, проверьте System.XML в противном случае, HtmlAgilityPack/How to use HTML Agility pack.
Почему вы пытаетесь разобрать XML с регулярным выражением в первую очередь? – Tomalak