gpt4 book ai didi

Python 正则表达式 : How to specify an optional match (for potentially empty sub expression)?

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:32 24 4
gpt4 key购买 nike

我需要匹配以下几组输入:

foo_abc_bar  
foo_bar

并得到“abc”或一个空字符串作为结果。

所以这是我写的正则表达式:

r'foo_(abc|)[_|]bar'

但出于某种原因,这与我给出的第二个字符串不匹配。

进一步检查,我发现 [_|] 不匹配空字符串。

那么,我该如何解决这个问题呢?

最佳答案

要使 abc_ 可选,您可以使用 question mark operator :

(abc_)?

因此,整个正则表达式变成:

r'foo_(abc_)?bar'

使用此正则表达式,第二个下划线(如果存在)将成为捕获组的一部分。如果您不希望这样,您可以在匹配后使用 .rstrip('_') 删除它,或者使用稍微复杂一些的正则表达式:

r'foo_(?:(abc)_)?bar'

I found that [_|] does not match an empty string.

没错。方括号表示字符组。 [_|] 将只匹配一个下划线或一个竖线,除此之外别无其他。换句话说,当竖线出现在字符组中时,它就失去了它的特殊意义。

关于Python 正则表达式 : How to specify an optional match (for potentially empty sub expression)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13539339/

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