Получение текста между косыми чертами на основе подстроки

#regex

#регулярное выражение

Вопрос:

У меня много строк, которые выглядят так

<HintPath>....packagesTest.5.8.2libnet35BLL.dll</HintPath>

Как мне искать, используя регулярное выражение, тексты между косыми чертами, которые содержат подстроку Test ?

В этом примере я должен получить Test.5.8.2

Это то, что я пробовал, но, похоже, это не работает: (?<=\)w*(Test)w*(?=\)

Комментарии:

1. [^\]*Test[^\]* regex101.com/r/Su1ciI/1 . Если вам нужно проверить наличие обратной косой черты, (?<=\)[^\]*Test[^\]*(?=\)

2. Спасибо! Что, если теперь он соответствует 3 строкам кода в целом, потому что между двумя косыми чертами, которые находятся в разных строках, есть тест? Есть ли способ сопоставить, только если 2 косых черты находятся в одной строке?

3. [^\n]*Test[^\n]* regex101.com/r/Su1ciI/2

4. Где вы используете регулярное выражение?

5.Использование w не соответствует точке. Вы могли бы повторить сопоставление точки и цифры \w*(Test(?:.d ) )\ regex101.com/r/6rbQVv/1 или используйте \w*(Test(?:.d ) )(?=\) , если могут быть множественные совпадения друг за другом regex101.com/r/tGkg2W/1

Ответ №1:

Вы можете использовать

 [^\n]*Test[^\n]*
  

Смотрите демонстрацию регулярных выражений.

Подробные сведения

  • [^\n]* — 0 или более символов, отличных от и новой строки (перевод строки)
  • Test — строка Test
  • [^\n]* — 0 или более символов, отличных от и новой строки.

Если вам нужно убедиться, что слева и справа есть a, добавьте (?<=\) положительный взгляд назад в начале шаблона и (?=\) положительный взгляд назад в конце шаблона:

 (?<=\)[^\n]*Test[^\n]*(?=\)
  

Ответ №2:

Вы пытаетесь сопоставить .5.8.2 с w* , но w не соответствует точке.

Если вы хотите сопоставить цифры после Test , вы можете повторить 1 или более раз, сопоставляя точку и 1 или более цифр.

 \w*(Test(?:.d ) )(?=\)
  

Объяснение

  • \ Совпадение
  • w* Сопоставьте необязательные символы слова
  • ( Группа захвата 1
    • Test(?:.d ) Сопоставьте тест и повторите 1 или более раз, сопоставляя a . и 1 цифры
  • ) Закрыть группу 1
  • (?=\) Позитивный прогноз, утверждение a справа

Демонстрация регулярных выражений


Другой вариант — добавить w и точку к классу символов, чтобы соответствовать любому из них.

 \w*(Test[w.]*)(?=\)
  

Демонстрация регулярных выражений