gpt4 book ai didi

python 字符串的正则表达式

转载 作者:行者123 更新时间:2023-11-28 21:30:12 25 4
gpt4 key购买 nike

考虑这个字符串

prison break: proof of innocence (2006) {abduction (#1.10)}

我只是想知道字符串中是否有(# float point value )}

我尝试了一些正则表达式,例如

re.search('\(\#+\f+\)\}',xyz) 

re.search('\(\#+(\d\.\d)+\)\}',xyz)

但是没有任何效果...有人可以在这里建议我一些东西

最佳答案

尝试r'\(#\d+\.\d+\)\}'

(, ).} 都是特殊的元字符,这就是为什么它们是前面有 \,因此它们按字面意思进行匹配。

您还需要应用+ repetition在正确的元素处。这里它附加到 \d ——数字 character class 的简写-- 表示只有数字可以出现一次或多次。

使用r'raw stringliters'可以更轻松地使用正则表达式模式,因为您不必过度转义反斜杠。

另请参阅


变体

出于教学目的,让我们考虑一些变化。这将展示正则表达式的一些基本功能。让我们首先考虑一种尝试的模式:

\(\#+(\d\.\d)+\)\}

为了便于阅读,我们将各部分分开:

\( \#+ ( \d \. \d )+ \) \}
\__________/
this is one group, repeated with +

所以这个模式匹配:

  • 一个文字 (,后跟一个或多个 #
  • 后跟以下一项或多项:
    • 一个数字、一个点和一个数字
  • 后跟文字 )}

因此,模式将匹配,例如(###1.23.45.6)} (as seen on rubular.com)。显然这不是我们想要的模式。

现在让我们尝试修改解决方案模式,并假设我们可能还希望只允许一个数字序列,而没有后续的句点和后面的数字。我们可以通过将该部分分组 (...) 并使用 ? 使其可选来实现此目的。

BEFORE
\(#\d+\.\d+\)\}
\___/
let's make this optional! (…)?

AFTER
\(#\d+(\.\d+)?\)\}

现在模式匹配,例如(#1.23)} 以及例如(#666)} (as seen on rubular.com)。

引用文献

关于python 字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com