Python:恰好 $n$ [?o] 的正则表达式,至少有一个 [o]

标签 python regex

我正试图找到正确的 python 正则表达式来解决这个问题:

给定一个由字符 ?_o 组成的字符串,找到长度为 n 的子字符串> 仅包含 ?o 以及至少一个 o

这是我想出来的,但它似乎不起作用:

n = 3
r = re.compile("
  (?=[o?]{"+str(n)+","+str(n)+"})  # first find a block of n characters that are either 'o' or '?'
  [o?]*o[o?]*                      # then check if that block has at least one 'o'
, re.VERBOSE")

我认为上面的问题是前瞻正确地找到了一个潜在的 block ,但是 [o?]*o[o?]* 正在贪婪地消耗超出限制的字符第一部分找到的 block 。我希望先行将后续表达式限制在先行匹配的范围内进行匹配,但我想这不是它的工作原理。

我可能会以另一种方式结束,因为对于正则表达式来说,这可能是太多的逻辑,而不是最好的方法,但我想知道如何在单个正则表达式中做到这一点。

最佳答案

你甚至不需要正则表达式。

pieces = s.split('_') # pieces are composed of only ? and o
for piece in pieces:
    if 'o' in piece and len(piece) >= n: # piece must have a substring of length n with o in it somewhere
        print "found it"
        break
else:
    print "didn't find it"

关于Python:恰好 $n$ [?o] 的正则表达式,至少有一个 [o],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317955/

相关文章:

Python:排除模块 Pyinstaller

python - Emacs elpy 和 web2py

c++ - 将 boost std::string::const_iterator 转换为 string 和 int c++

java - 如何在 Java 字符串中的每个 "."之前输入 ","2 个空格

javascript - 为什么这个 JavaScript 正则表达式很慢?

python - 将 FB Graph API 日期字符串解析为 python 日期时间

python - 从 HTML 中删除 Script 标签和 on 属性

python - 在 Python 中使用 delta 和 epsilon 求立方根

regex - 高级 Lua 模式匹配

javascript - 在 Javascript 中删除字符串的前导零