Я создаю приложение, и у меня есть требование захватить символы до и после матчей. Кажется, что это работает нормально, за исключением случаев, когда в соседнем захвате есть несколько совпадений.Capture Text Surrounding Regex Match .NET
Regex:
.{0,10}(?=abc)
Это должно захватить до 10 символов перед строкой "ABC" найден.
Проблема появляется, если есть повторение матча в предыдущем тексте:
"qqqqabcabcqqq"
С выше текст, я ожидал бы два Протоколируется:
qqqq (the 4 characters before the first abc occurrence)
qqqqabc (the 7 characters before the second abc occurrence)
я не являюсь, однако получая эти матчи. Единственное совпадение, которое я получаю:
qqqqabc
Я уверен, что чего-то не хватает, но я не уверен, что. Я считаю, что мое регулярное выражение как-то слишком жадно, и поэтому он игнорирует первый матч в пользу большего, второго. Вот что мне нужно:
мне нужно регулярное выражение, которое:
1. для .NET
2. Смотрит в строке для X символов перед точным соответствием на строки S .
3. Включает любой вторичный матч на S (вызов S '), что находится в пределах X символов перед S
4. все равно, каковы эти персонажи.
Уверяю вас, я попробовал найти похожие ответы, но я не смог найти ничего, что бы непосредственно отвечало на этот вопрос (который преследовал меня в течение двух дней. Да, я должен использовать регулярное выражение). Что касается аромата Regex, я работаю в .NET.
Большое вам спасибо за помощь.
Престола [это демо] (http://regexstorm.net/tester?p=%28.%7b0%2c10%7d%3f%29abc&i=qqqqabcabcqqq): целое совпадение - 'qqqqabc', а группа 1 -' qqqq'. –
Я сразу посмотрю на это. Огромное спасибо. Я не думаю, что могу пометить ваш комментарий как ответ, хотя :) –
Я не думаю, что это решение, поскольку то, что вы просите, не похоже на регулярную задачу регулярного выражения. –