2024-04-20 13:20:07 发布
网友
我有个要求,我需要使用regex从字符串中提取子字符串。你知道吗
例如,以下是我的示例数据:
Hello, "How" are "you" What "are" you "doing?"
从这个示例数据中,我只需要提取第二次和第四次出现的双引号数据。你知道吗
我的要求是:you doing?
you doing?
我尝试了下面的正则表达式,但我无法按照我的要求提取。你知道吗
"(.*?)"
我们可以使用re.findall,然后对结果进行切片以获得第一个和第三个匹配:
re.findall
import re string = 'Hello, "How" are "you" What "are" you "doing?"' result = re.findall('".+?"', string)[1::2] print(result)
在这里,regex匹配双引号中包含的任意数量的字符,但是尝试尽可能少地匹配(一个非贪婪的匹配),否则我们将得到一个匹配"How" are "you" What "are" you "doing?"。你知道吗
"How" are "you" What "are" you "doing?"
输出:
['"you"', '"doing?"']
如果要组合它们而不使用引号,可以使用str.strip和str.join:
str.strip
str.join
print(' '.join(string.strip('"') for string in result))
另一种方法是在"上拆分:
"
result = string.split('"')[1::2][1::2] print(result)
['you', 'doing?']
这是因为,如果用双引号分隔字符串,则输出如下:
这意味着我们可以取每个偶数元素来得到引号中的元素。然后我们可以再次切片结果,得到第二和第四个结果。你知道吗
只有正则表达式的解决方案。可能不是100%准确,因为它匹配每一次出现,而不仅仅是第二次和第四次出现,但它适用于示例。你知道吗
"[^"]+"[^"]+("[^"]+")
JS演示:
我们可以尝试使用re.findall提取所有引用的术语。然后,仅使用结果列表中的偶数项构建字符串:
input = "Hello, \"How\" are \"you\" What \"are\" you \"doing?\"" matches = re.findall(r'\"([^"]+)\"', input) matches = matches[1::2] output = " ".join(matches) print(output) you doing?
我们可以使用
re.findall
,然后对结果进行切片以获得第一个和第三个匹配:在这里,regex匹配双引号中包含的任意数量的字符,但是尝试尽可能少地匹配(一个非贪婪的匹配),否则我们将得到一个匹配
"How" are "you" What "are" you "doing?"
。你知道吗输出:
如果要组合它们而不使用引号,可以使用
str.strip
和str.join
:输出:
另一种方法是在
"
上拆分:输出:
这是因为,如果用双引号分隔字符串,则输出如下:
这意味着我们可以取每个偶数元素来得到引号中的元素。然后我们可以再次切片结果,得到第二和第四个结果。你知道吗
只有正则表达式的解决方案。可能不是100%准确,因为它匹配每一次出现,而不仅仅是第二次和第四次出现,但它适用于示例。你知道吗
JS演示:
我们可以尝试使用
re.findall
提取所有引用的术语。然后,仅使用结果列表中的偶数项构建字符串:相关问题 更多 >
编程相关推荐