【问题标题】:I am doing a re.findall a string and I get an error of: error: nothing to repeat at position 0我正在做一个 re.findall 一个字符串,我得到一个错误:错误:在位置 0 没有重复
【发布时间】:2019-08-13 18:12:41
【问题描述】:

下午好,我在使用 paramiko 通过团队进行 ssh 查询后得到以下字符串,我在变量“buff_config”中得到字符串,我想知道表达式“* B: P79COL01”的次数# $" 在其中找到,但这样做会出现以下错误:

/usr/local/lib/python3.6/re.py in findall(模式、字符串、标志) 220 221 空匹配包含在结果中。""" --> 222 return _compile(pattern, flags).findall(string) 223 224 def finditer(模式,字符串,标志=0):

/usr/local/lib/python3.6/re.py 在 _compile(pattern, flags) 299 如果不是 sre_compile.isstring(pattern): 300 raise TypeError("第一个参数必须是字符串或编译模式") --> 301 p = sre_compile.compile(模式,标志) 302 如果不是(标志和调试): 303 如果 len(_cache) >= _MAXCACHE:

/usr/local/lib/python3.6/sre_compile.py 在 compile(p, flags) 560 如果是字符串(p): 561 模式 = p --> 562 p = sre_parse.parse(p, flags) 563 其他: 564 模式 = 无

/usr/local/lib/python3.6/sre_parse.py in parse(str, flags, pattern) 853 854 尝试: --> 855 p = _parse_sub(源、模式、标志和 SRE_FLAG_VERBOSE,0) 856 除了详细: 857 # VERBOSE 标志在模式内打开。成为

/usr/local/lib/python3.6/sre_parse.py 在 _parse_sub(source, state, 详细,嵌套) 414 而真: 415 项附加(_parse(源,状态,详细,嵌套 + 1, --> 416 不是嵌套的,不是项目)) 417 如果不是源匹配(“|”): 418休息

/usr/local/lib/python3.6/sre_parse.py in _parse(source, state, 详细,嵌套,第一) 614 如果不是 item 或 (_len(item) == 1 并且 item[0][0] 是 AT): 第615章 --> 616 source.tell() - 这里 + len(this)) 617如果_REPEATCODES中的项目[0][0]: 618 raise source.error("多次重复",

错误:在位置 0 没有可重复的内容

我使用的代码如下:

re.findall('*B:P79COL01#$',buff_config)

buff_config 变量:

对不起,我可以放置 buff_config 变量包含的内容,因为我没有离开问题编辑器

【问题讨论】:

  • *B:P79COL01# 是设备的提示符。为什么您希望它在字符串中包含两次以上?
  • 您的正则表达式以 astrix 开头。 astrixi 用于表示 0 次或多次出现或某些匹配。您需要添加反斜杠以删除特殊含义,以便将其视为文字
  • 这是 XY 问题吗?

标签: python


【解决方案1】:

* 在正则表达式中的意思是“重复前面的内容 0 次或更多次”,因此它不能是第一个字符,这是错误试图告诉你的。

您可以转义它 (\*) 以搜索文字 * 字符,但您甚至不需要正则表达式。你可以使用buff_config.count('*B:P79COL01#')

【讨论】:

    【解决方案2】:

    您的正则表达式以 astrix 开头,用于指示 0 个或多个实例或模式。但是,查看您的源代码时,您需要一个文字 astrix,因此您需要在它前面加上一个反斜杠,以告诉正则表达式忽略 * 的特殊含义,并将其作为字符串中的文字字符

    re.findall(r'\*B:P79COL01#$',buff_config)
    

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      相关资源
      最近更新 更多