регулярное выражение найти соответствие между определенными символами и содержит определенный символ - PullRequest
2 голосов
/ 01 июля 2019

Итак, у меня есть этот текст ниже:

#nama:sulaiman haqa#alamat:kepanjen#kelamain:L#hobi:tidur#

Мне нужно найти текст между : и #, который содержит определенное ключевое слово. Пример:

Search keyword: haq
result: sulaiman haqa

В приведенном выше примере строка sulaiman haqa соответствует требованиям: она находится между : и #, а также имеет ключевое слово haq.

Я использую это регулярное выражение, чтобы найти слово между : и #, но я не знаю, как поставить условие содержит.

(?<=\:).*?(?=\#)

Пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 01 июля 2019

Вы можете использовать это регулярное выражение:

(?<=:)[^#]*haq[^#]*(?=#)

Демонстрация RegEx

Подробности RegEx:

  • (?<=:): посмотрите назад, чтобы утверждать, что предыдущий символ :
  • [^#]*: соответствует 0 или более любому символу, который не #
  • haq: соответствует тексту haq
  • [^#]*: соответствует 0 или более любому символу, который не #
  • (?=#): предвкушение, чтобы утверждать, что следующий символ #
3 голосов
/ 01 июля 2019

Как насчет этого:

(?<=\:).*?haq.*?(?=\#)

Вы должны будете использовать возможности вашего языка, чтобы избежать "haq", хотя в случае, если он содержит какие-либо специальные символы.

0 голосов
/ 01 июля 2019

С вашим выражением все в порядке, я думаю, вы можете добавить только группу захвата:

(?<=:)(.*haq.*?)(?=#)

, чтобы получить желаемые значения, и это, вероятно, решит проблему.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...