re.match匹配字符串开头的字符串 . 您可以在表达式中添加单词分隔符
name + r'\b'
但在你的情况下,重新是一种矫枉过正,简单的比较会做
name == line.partition('|')[0]
顺便说一句,如果你只需要在开头 - 或结束时拆分一次 - 分区和rpartition函数是更好的选择
EDIT
定时:
>>> timeit('line.startswith(name+"|")', 'line="John|22|Nice";name="John"')
0.33100164101452345
>>> timeit('line.partition("|")[0] == name', 'line="John|22|Nice";name="John"')
0.2520693876228961
>>> timeit('re.match(name+r"\b", line)', 'import re; line="John|22|Nice";name="John"')
1.8754496594662555
>>> timeit('line.split("|")[0] == name', 'line="John|22|Nice";name="Jonny"')
0.511219799415926
>>> timeit('line.partition("|")[0] == name', 'line="John|22|Nice";name="John"')
0.27333073995099083
>>> timeit('line.split("|", 1)[0] == name', 'line="John|22|Nice";name="John"')
0.5120651608158937
坦率地说 - 我很惊讶自己