re.findall返回一个字符串,其中包含一个空格

时间:2018-02-13 18:49:35

标签: regex python-3.x

我正在使用正则表达式在用户的给定输入中查找车牌,

numberPlate = input("Enter the Number plate of the car, eg LV04 HNX, HR06PRK")
numberPlateRegEx = re.compile(r'\w\w\d\d( )?\w\w\w') # Creates a regular expression object, can be used to scan strings for anything matching the given pattern, \w is a letter, \d is (strictly, a number or letter), ( )? means there can be an optional space
numberPlateFound = re.findall(numberPlateRegEx, numberPlate)

当我输入包含车牌号的图案的输入时,numberPlateFound是一个single space inside of it:

的列表

当我输入输入not including a car number plate inside:

如果我想找到某些东西,但是如果我想要找到找到的模式,那么这是有效的吗?我会使用不同的方法吗?

编辑:我的问题是different from this suggested question,因为在我的例子中它不返回一个空字符串,而是一个里面有空格字符的字符串,我不知道为什么,我想知道为什么

1 个答案:

答案 0 :(得分:1)

一些事情:

  • 无需在自己的组中添加空格以使其可选。
  • 如下图所示,如果没有\b,您可能会比您尝试的更匹配。
    • \b是一个单词边界。它匹配单词字符和非单词字符或行开始/结束之间的任何位置:(^\w|\w$|\W\w|\w\W)而不消耗字符(零宽度断言)
  • 使用量词作为我的模式,可以提高性能

See code in use here

import re

r = re.compile(r"\b\w{2}\d{2} ?\w{3}\b")
s = "Enter the Number plate of the car, eg LV04 HNX, HR06PRK"
print(r.findall(s))