.net #regex
#.net #регулярное выражение
Вопрос:
Может кто-нибудь сказать мне, что означает эта строка кода, я знаю, что она ищет регулярные выражения, но я не понимаю бит в конце.
System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
Заранее спасибо.
Комментарии:
1. Пять вопросов без выбранных ответов? Выбор ответа на некоторые из ваших вопросов, вероятно, повысит ваши шансы получить ответ здесь.
2. Почему этот вопрос помечен как SQL?
3. Судя по идентификаторам в коде, похоже, что вы ориентируетесь. NET, а не SQL. Тем не менее, эта строка кода не будет компилироваться ни в одном . Чистый язык, о котором я знаю…
4. @Jorn, для меня это похоже на C #. Следует скомпилировать
5. @Abe: Для чего он должен компилироваться?
Regex
это имя класса, но в этом коде оно вызывается как метод. Я предполагаю, что Твиди хочет вызвать конструктор дляRegex
класса. В этом случае C # требуетnew
ключевое слово.
Ответ №1:
(?<=<Last>)
это взгляд на утверждение. это означает, что он соответствует .*
, только если впереди есть <Last>
(?=</Last>)
это утверждение о перспективе. гарантирует <Last>
, что на .*
Более подробную информацию о регулярных выражениях в .net можно найти здесь, в msdn.
Аннотация, приведенный пример не является полной строкой кода (см. Class Regex в msdn)
Это должно быть частью чего-то подобного:
Regex MyRegex = new System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
это создает новый объект регулярных выражений.
Другая возможность заключается в использовании регулярных выражений без создания объектов регулярных выражений, которые будут выглядеть следующим образом со статическим методом isMatch
:
System.Text.RegularExpressions.Regex.IsMatch(StringToSearchIn, "(?<=<Last>).*(?=</Last>)")
Это возвращает значение true или false.
Комментарии:
1. @razlebe Я добавил больше информации, надеюсь, теперь и неопытные читатели смогут извлечь выгоду из этого вопроса и ответа.
Ответ №2:
Как отмечалось ранее, шаблон (?<=<Last>).*(?=</Last>)
соответствует самой длинной строке текста, которой предшествует <Last>
и за которой следует </Last>
, выраженный с помощью положительных поисковых запросов.
Однако обратите внимание, что из-за жадности сама эта согласованная строка также может содержать <Last>
и / или </Last>
…
Ответ №3:
В основном он ищет <Last>
теги в некотором XML-документе, включая его содержимое.
?<= — это взгляд на утверждение. Подробное объяснение смотрите здесь.