当行以特定单词开头时搜索测试

时间:2018-07-19 03:35:32

标签: python regex

当一行的开头以特定单词开头时,我需要搜索特定单词。例如:

下面是我的测试字符串:

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,我不希望这样。

2 个答案:

答案 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']