【问题标题】:Python and Regex can't find sequence in string [duplicate]Python和Regex在字符串中找不到序列[重复]
【发布时间】:2017-05-23 14:56:47
【问题描述】:

您好,我有以下字符串:

t = '<td align="right" class="ofGridLinesTop" headers="amount" sortvalue="2633.33" valign="top">\n\t\t\t\t\t  \n\t\t\t\t\t  \n\t\t\t\t\t  \n\t\t\t\t\t\t$2,633.33\n\t\t\t\t\t  \n\t\t\t\t\t  \n\t\t\t\t\t</td>'

我知道下面的正则表达式序列正确识别了我想要的字符串部分(sortvalue="2633.33")

\bsortvalue=.\b\d+.\d+.

但是当我使用以下语句时:

Amt = re.findall('\bsortvalue=.\b\d+.\d+.',t)

我空空如也。知道为什么吗?

【问题讨论】:

  • 改用r'\bsortvalue="(\d+\.\d+)"'。
  • 这个正则表达式 '(sortvalue)(=)(".*?")' 怎么样?

标签: python regex findall


【解决方案1】:

使用这个:

Amt = re.findall('\\bsortvalue=.\\b\d+.\d+.',t)

或者这个:

Amt = re.findall(r'\bsortvalue=.\b\d+.\d+.',t)

另见this question

【讨论】:

  • 正确答案但应该解释;您没有转义 \b 等中的反斜杠,因此您实际上是在替换那些转义码而不是您想要的(即 \b 是退格)。要解决此问题,您可以转义反斜杠,即\\b,或者通过在正则表达式前面加上r 来创建原始字符串,如在 Horcrux 的第二个示例中,它本质上是一个字符串文字,因此忽略转义字符。
猜你喜欢
  • 2022-01-24
  • 2016-01-12
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2016-10-16
相关资源
最近更新 更多