正则表达式查找某些字符之间的匹配项并包含特定字符

时间:2019-07-01 04:05:27

标签: regex

所以我在下面有这段文字:

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

我需要在:#之间找到包含某些关键字的文本。  示例:

Search keyword: haq
result: sulaiman haqa

在上面的示例中,字符串sulaiman haqa满足要求:它在:#之间,并且具有haq关键字。

我使用此正则表达式在:#之间找到单词,但是我不知道如何放置包含条件。

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

请帮助。

3 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式:

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

RegEx Demo

RegEx详细信息:

  • (?<=:):回溯断言前一个字符是:
  • [^#]*:匹配0个或多个非#的字符
  • haq:匹配文本haq
  • [^#]*:匹配0个或多个非#的字符
  • (?=#):先行断言下一个字符是#

答案 1 :(得分:3)

怎么样呢?

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

您需要使用语言的功能来转义“ haq”,即使它包含任何特殊字符。

答案 2 :(得分:0)

您的表情很好,我想您可能只想添加一个捕获组:

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

以便捕获您所需的值,这很可能会解决问题。

Demo