当一行的开头以特定单词开头时,我需要搜索特定单词。例如:
下面是我的测试字符串:
Switch : 800215-00-02 0805G-00232 Rev 2.0 BootROM: 1.0.3.1 IMG: 15.3.1.4
PSU : 700214-00-05 YT675-00893 Rev 2.0 BootROM: 3.0.2.9 IMG: 19.3.6.9
现在,我仅在行以“ Switch”开头的地方搜索“ 0805G-00232”。我可以使用正则表达式\ w {5}-\ w {5}仅搜索“ 0805G-00232”,但这也将包括PSU,我不希望这样。
答案 0 :(得分:0)
匹配行的开头,后跟Switch
,后跟任意字符,后跟\w{5}-\w{5}
在组中,然后提取该组:
import re
strs = [
'Switch : 800215-00-02 0805G-00232 Rev 2.0 BootROM: 1.0.3.1 IMG: 15.3.1.4',
'PSU: : 700214-00-05 YT675-00893 Rev 2.0 BootROM: 3.0.2.9 IMG: 19.3.6.9'
]
regex = '^Switch.+(\w{5}-\w{5})'
for str in strs:
result = re.compile(regex).search(str)
if result is not None:
print(result.group(1))
答案 1 :(得分:0)
给出:
>>> print st
Switch : 800215-00-02 0805G-00232 Rev 2.0 BootROM: 1.0.3.1 IMG: 15.3.1.4
PSU : 700214-00-05 YT675-00893 Rev 2.0 BootROM: 3.0.2.9 IMG: 19.3.6.9
您可以使用正则表达式对各行进行过滤:
>>> filter(lambda s: re.search(r'^Switch\s+:\s*.*0805G-00232', s),st.splitlines())
['Switch : 800215-00-02 0805G-00232 Rev 2.0 BootROM: 1.0.3.1 IMG: 15.3.1.4']