在python中检测regex模式匹配以捕获特定序列之前和之后的内容

a9wyjsp7  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(114)

在python中,我如何创建一个正则表达式来捕获这个正则表达式模式r(?!^no_|_no_)like_thi(?:s|)"之前和之后的内容
因为"like_thi(?:s|)"前面不能有"(?!^not_|_not_)"
?!是一个“负先行”。它用于对字符串中的模式执行负Assert。
下面的正则表达式模式不适合我

import re

test_string = "ohh_you_not_like_this_things_yet" #case 1
test_string = "not_like_this_things_yet" #case 2
test_string = "ohh_younot_like_this_things_yet" #case 3

a, b = "", ""

regex_pattern = r"(.*)(?!^not_|_not_)like_thi(?:s|)(.*)\s*=\s*"

match = re.search(regex_pattern, line, flags=re.IGNORECASE)
if match:
    print("detect pattern!!!\n"
    a = match.group(1).strip()
    b = match.group(2).strip()

#print results
print(a)
print(b)

对于我使用的捕获组,.*是一种模式,它表示任何重复零次或多次的字符(除了换行符)。
预期结果将是:

#case 1
""
""

#case 2
""
""

#case 3
detect pattern!!!

"ohh younot "
" things yet"

我修改代码以使代码正确工作?

qyswt5oh

qyswt5oh1#

你可以用

(?<![_\s]not_)(?<!^not_)like_this?

参见regex demo

  • 详情 *:
  • (?<![_\s]not_)-紧挨着左边,不应该有_not_或空格+not_
  • (?<!^not_)-在左边,字符串的开头不应该有not_
  • like_this?-like_thi和可选的s

相关问题