返回列表中的匹配与正则表达式python列表

问题描述 投票:0回答:1

如果一个单词的字母部分超过3个字母,我有一个字符串,我想将其存储在列表中。我需要将“小时”和“lalal”存储到列表中。我为alpha-digit和digit alpha序列编写了一个正则表达式模式,如下所示。

regex = ["([a-zA-Z])-([0-9])*","([0-9])*-([a-zA-Z])"]
tring = 'f-16  is 1-hour, lalal-54'
for r in regex:
    m = re.search(r,tring)
    d.append((m.group(0))
print(d)

但这显然给了我所有存储的字母数字模式。所以,我想我可以扩展它来计算每个模式中的字母并以不同的方式存储它。那可能吗?

编辑:另一个例子是tring =我会在1小时内出现,这个输出应该是['小时']

python regex python-3.x list
1个回答
0
投票

因此,如果前面或后面跟着数字和连字符,您只想捕获字母数字文本。您可以使用此正则表达式使用交替来捕获这两种情况,

([a-zA-Z]{4,})-\d+|\d+-([a-zA-Z]{4,})

说明:

  • qazxsw poi - 捕获长度为4或更长的字母数字文本并存储在第1组中
  • ([a-zA-Z]{4,}) - 确保它后跟连字符和一个或多个数字
  • -\d+ - 有两种情况的交替
  • | - 匹配一个或多个数字和连字符
  • qazxsw poi - 捕获长度为4或更长的字母数字文本并存储在第2组中

\d+-

检查这个python代码,

([a-zA-Z]{4,})

打印,

Demo
© www.soinside.com 2019 - 2024. All rights reserved.