Может кто-нибудь помочь мне получить контент между [% = и%].Regex: получить контент между [% = и%]
ответ
Если не может быть вложенными тегами вы можете использовать следующее регулярное выражение:
\[%=(.*?)%]
символы означают следующее:
\[ Match a literal [ character. The backslash is required otherwise [ would start a character class. %= Match %= (.*?) Match any characters, non-greedy. i.e. as few as possible. The parentheses capture the match so that you can refer to it later. %] Match %] - Note that it is not necessary to escape ] here, but you can if you want.
Вот как вы можете использовать его в C#:
string s = "sanfdsg[%=jdgashg%]jagsklasg";
Match match = Regex.Match(s, @"\[%=(.*?)%]");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
}
Выход:
jdgashg
Или, чтобы получить несколько матчей:
string s = "foo[%=bar%]baz[%=qux%]quux";
foreach (Match match in Regex.Matches(s, @"\[%=(.*?)%]"))
{
Console.WriteLine(match.Groups[1].Value);
}
Выход:
bar
qux
Примечание строка символов записывается как @ "...". Это означает, что обратные косые черты внутри строки рассматриваются как буквальные обратные косые черты, а не escape-коды. Это часто полезно при написании регулярных выражений на C#, чтобы избежать дублирования всех обратных косых черт внутри строки. Здесь это не имеет большого значения, но в более сложных примерах это поможет больше.
%=\s?(.*?)\s?%
возможно?
(?<=\[%=).*?(?=%])
будет соответствовать любому тексту (включая линейные разрывы) между этими двумя разделителями (без соответствия самих разделителей). Вложенные разделители не поддерживаются.
Чтобы перебрать все матчи:
Regex my_re = new Regex(@"(?<=\[%=).*?(?=%\])", RegexOptions.Singleline);
Match matchResults = my_re.Match(subjectString);
while (matchResults.Success) {
// matched text: matchResults.Value
// match start: matchResults.Index
// match length: matchResults.Length
matchResults = matchResults.NextMatch();
}
\[%=([^%]|%[^\]])*%\]
Это не зависит от какой-либо из операторов жадностью и, таким образом, следует переводить на любой язык регулярных выражений. Вы можете или не должны заботиться об этом.
Попробуйте это:
\[%=((?:[^%]|%[^\]])*)%]
Да, и этот тоже выглядит неплохо;) –
@Nate C-K: Да, два идиота, одна мысль. – Gumbo
У меня возник вопрос о регулярном выражении для комментариев в стиле С неправильно в тесте один раз, так что теперь решение навсегда сгорело в моем мозгу. –
Вы можете использовать простой
\[%=(.*?)%\]
, но вы должны понимать, что это не будет обрабатывать правильно гнездиться. Если содержание может занимать несколько строк, вам также необходимо указать RegexOption.Singleline
, чтобы сделать границы .*?
.
Никакое регулярное выражение не может обрабатывать гнездование. –
@Nate - уверен, что он может. рекурсивное регулярное выражение. –
Нет такой вещи, как рекурсивное регулярное выражение (несмотря на то, что люди могут ошибочно придумать). Если он рекурсивный, то он по определению не является регулярным. –
- 1. RegEx: Заменить контент между комментариями
- 2. Regex, который подбирает контент между
- 3. Regex получить все между
- 4. Найти контент между тегами HTML, используя RegEx
- 5. RegEx в JavaScript: контент между двумя тегами
- 6. RegEx для данных между. и {
- 7. Получить контент между короткими кодами
- 8. Regex получить все содержимое между двумя символами
- 9. Внутренний контент RegEx
- 10. regex Как получить текст между ")" & "("
- 11. Regex получить текст между тегами
- 12. Regex, получить все данные между «?»
- 13. Regex, чтобы получить условия между «»
- 14. RegEx - текст между \ [и \]
- 15. Получить HTML-контент между двумя элементами
- 16. Regex - сопоставить многострочный контент между двойными фигурными скобками
- 17. Получить контент между двумя строками PHP
- 18. Как получить контент между шаблонами поиска
- 19. Получить контент между совпадающими тегами шаблона
- 20. Эхо-контент между тегами?
- 21. Получить контент между первым словом и разрывом строки
- 22. Получить html и текстовый контент из XML между двумя элементами
- 23. получить контент между строкой m и строкой n
- 24. Как я могу получить контент между?> И <? Php
- 25. Производительность между DOM parsing и Regex
- 26. Механизируйте контент между «div's»
- 27. Regex PHP: получить конкретный контент с другого сайта
- 28. Regex между равным и амперсандом
- 29. Regex: получить весь контент вкл. newline внутри тегов
- 30. Как получить конкретный вложенный в блок контент с использованием regex
Мне нравится этот: D – Gumbo