Python 正则学习(二)

1. (?=...)和(?!...) 在目标字符串中实现一个前视匹配,而不必实际上使用这些字符串。前者是一个正向前视断言,后者是负向前视断言。

import re

data=''' 
    Guido van Rossum
    Tim Peters
    Alex Martelli
    Just van Rossum
    Raymond Hettinger
'''
print(re.findall(r'\w+(?= van Rossum)', data))  # ['Guido', 'Just']
data = '''
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
'''

print(re.findall(r'(?m)^\s+(?!noreply|postmaster)(\w+)', data)) # ['sales', 'end', 'admin']

?m表示匹配多行

2. 在程序中调用其它程序,需要调用os.popen(),尽管os.popen()命令现在已经被subprocess模块所替换,但它更容易使用。

import re
import os

f = os.popen('tasklist /nh', 'r');
for eachline in f:
    print(re.findall(r'([\w.]+(?:[\w.]+)*)\s\s+(\d+) \w+\s\s+\d+\s\s+([\d,]+ K)', eachline.rstrip()))

f.close()

# []
# [('Process', '0', '24 K')]
# [('System', '4', '308 K')]
# [('smss.exe', '344', '1,544 K')]
# .....

 

你可能感兴趣的:(python)