gpt4 book ai didi

python - 任意数量的数字组的正则表达式,分组之间有 ';' 和 '\s'

转载 作者:行者123 更新时间:2023-12-01 09:01:43 25 4
gpt4 key购买 nike

我有以下代码来根据下面概述的情况提取给定字符串中的第一组和最后一组数字。它有效,但似乎不是最佳的:

import re

# case 1
pattern = '\d+\ \d+'
string = 'Hello 999 888999'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))

# case 2
pattern = '\d+\ \d+;\d+ \d+'
string = 'How are things 999 888999;222 444'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))

# case 3
pattern = '\d+\ \d+;\d+ \d+;\d+ \d+'
string = 'It is nice 999 888999;222 444;33 55'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))

# case 4
pattern = '\d+\ \d+;\d+ \d+;\d+ \d+;\d+ \d+'
string = 'Please help yourself 999 888999;222 444;33 55;44 6661'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))

这 4 种情况是:

  1. 任意数量的单词,后跟数字,后跟空格,后跟数字
  2. 任意数量的单词,后跟数字,后跟空格,后跟以“;”分隔的数字后跟空格,后跟数字
  3. 任意数量的单词,后跟数字,后跟空格,后跟以“;”分隔的数字后跟空格,后跟数字,并用“;”分隔后跟空格,后跟数字
  4. 等等

关于如何一次性做到这一点有什么建议吗?

最佳答案

听起来常见的模式是您想要找到初始数字字符串和最终数字字符串。您可以使用

(\d+).*?(\d+$)

为了尽快匹配和捕获尽可能多的数字,请延迟重复任何字符,直到到达另一个数字字符串,然后是该字符串的末尾。

pattern = re.compile(r'(\d+).*?(\d+$)')
for str in ['Hello 999 888999', 'How are things 999 888999;222 444', 'It is nice 999 888999;222 444;33 55', 'Please help yourself 999 888999;222 444;33 55;44 6661']:
match = re.search(pattern, str)
print(', '.join(match.groups()))

https://regex101.com/r/FgVIdV/1

关于python - 任意数量的数字组的正则表达式,分组之间有 ';' 和 '\s',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52416339/

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