gpt4 book ai didi

带有特殊字符的 Python 正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:04 26 4
gpt4 key购买 nike

在编写稳健的正则表达式以从字符串中获取信息时遇到困难。

$ string1 = 'A_XYZ_THESE_WORDS'
$ string2 = 'A_ABC_THOSE_WORDS'

我想要一个稳健的解决方案,可以从 string1 或 string2 中分别提取“THESE_WORDS”或“THOSE_WORDS”。

基本上,我需要删除前两个下划线 (_) 之前的所有内容,但它们之前的文本会有所不同。

$ get_text = re.search('(?<=A_)\w+(_)',string1)
$ print get_text.group()
$ 'XYZ_THESE_'

最佳答案

根据您的问题陈述:

I need something that removes everything before the first two underscores

你不一定需要正则表达式:

>>> string1 = 'A_XYZ_THESE_WORDS'
>>> string1.split("_", 2)[2]
'THESE_WORDS'

str.split 的第二个参数是 split 的最大次数。这将拆分前两个 '_',然后从结果列表中取出第三项(字符串的其余部分)。

如果字符串中的下划线少于两个,这将抛出一个 IndexError - 这让您知道该字符串不是您期望的格式,但如果这种行为是不可取的,请考虑:

>>> string1 = 'A_XYZ_THESE_WORDS'
>>> string1.split("_", 2)[-1]
'THESE_WORDS'

它从 str.split 中获取列表中的last 项,而不是假设会有三个。对比:

>>> "JUST_ONE".split("_", 2)[2]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
"JUST_ONE".split("_", 2)[2]
IndexError: list index out of range

>>> "JUST_ONE".split("_", 2)[-1]
'ONE'

关于带有特殊字符的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24247605/

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