gpt4 book ai didi

python - 使用正则表达式从字符串中提取子字符串

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:39 25 4
gpt4 key购买 nike

我有一个要求,我需要使用正则表达式从字符串中提取子字符串。

例如,这是我的示例数据:

Hello, "How" are "you" What "are" you "doing?"

从这个示例数据中,我只需要提取第二次和第四次出现的双引号数据。

我的要求是:你在做什么?

我尝试使用以下正则表达式,但无法按照我的要求进行提取。

"(.*?)"

最佳答案

我们可以使用re.findall,然后对结果进行切片,得到第一个和第三个匹配项:

import re

string = 'Hello, "How" are "you" What "are" you "doing?"'
result = re.findall('".+?"', string)[1::2]

print(result)

这里,正则表达式匹配双引号中包含的任意数量的字符,但尝试匹配尽可能少的字符(非贪婪匹配),否则我们将以一个匹配结束, “你”“怎么样”你“在”做什么?

输出:

['"you"', '"doing?"']

如果你想在不使用引号的情况下组合它们,你可以使用 str.stripstr.join:

print(' '.join(string.strip('"') for string in result))

输出:

you doing?

另一种方法是在 " 上拆分:

result = string.split('"')[1::2][1::2]
print(result)

输出:

['you', 'doing?']

之所以可行,是因为如果用双引号分隔字符串,那么输出将如下所示:

  1. 第一个双引号之前的所有内容
  2. 第一个双引号之后和第二个之前的所有内容
  3. 第二个双引号之后和第三个之前的所有内容...

这意味着我们可以取每个偶数元素来得到引号中的元素。然后我们可以再次对结果进行切片以获得第二个和第四个结果。

关于python - 使用正则表达式从字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160112/

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