繁体   English   中英

匹配子字符串列表中的子字符串

[英]match a substring in a list of substrings

使用正则表达式有更好的方法,

>>> HOSTS=['backup-ros', 'backupa-files', 'print-server1','print-server2'] 
>>> for host in HOSTS:
      ...     if 'backup' in host: 
... 
backup-ros 
backupa-files

这是部分正确的。

我尝试了这个:

a=re.findall(r'backup-(\w+)', ' '.join(HOSTS))
>>> a
['ros']

这给了我“罗斯”。

最后:

a=re.match(r'backup-(\w+)', ' '.join(HOSTS))
>>> a.group()
'backup-ros' 

我认为是正确的。 但是,我仍然想问这是否是正确的方法,是更好的方法。

编辑:几句话后,我意识到,不清楚我在寻找什么。 我需要在目录中找到名为“ backup-somename”的目录的名称。 但是我不想包括名称为“ backupa-somename”或“ backupb-somename”的目录。 这就是为什么我的第一个for循环对我来说不够好。

提前致谢。 奥兹

没有正则表达式,您可以考虑使用.startswith()吗?

>>> HOSTS = ['backup-ros', 'backupa-files', 'print-server1','print-server2']
>>> backups = [x for x in HOSTS if x.startswith('backup-')]
>>> backups
['backup-ros']

无需将列表加入字符串中。

代替这个

a=re.findall(r'backup-(\w+)', ' '.join(HOSTS)) 

采用

a=re.findall(r'(backup-[\w]+)', ' '.join(HOSTS)).

问题是您的正则表达式匹配整个模式,但最后将\\ w +分组。 这是一个更简单的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM