为什么re.match(“c”,“cat”)不返回true?

时间:2016-03-20 20:32:18

标签: python regex python-2.7

为什么

public function editProfile(){
   $validator = Validator::make(Request::all(),[
    'u_avatar' => 'required|mimes:jpeg,jpg,JPG,JPEG'
   ]);

   if($validator->fails()){
       // Do whatever you want without the image
   }

   // Do whatever you want with the image
} 

返回False,但

not re.match("c", "cat")

不返回True,而是返回内存中对象的位置。我找不到让这个语句返回true的方法,但我知道这是真的,因为:

re.match("c", "cat")

返回“是!”。

正如我所说,这没有实际意义,至少现在没有,但它确实困扰我。

3 个答案:

答案 0 :(得分:4)

如果匹配,函数re.match()会返回match object,如果没有,则返回None

要创建一个bool,您可以使用:

if re.match(...) is not None:

然而,在Python中并不是绝对必要的:看看例如this thread了解Python的“真实”和“虚假”值。

答案 1 :(得分:3)

使用bool()转换为布尔值(true / false):

bool(re.match("c", "cat")) == true

re.match("c", "cat")语句中使用if时,它会自动转换为布尔值true,这就是return Yes!的原因

使用not会自动将其转换为布尔值,然后将其反转,因此:

not re.match("c", "cat") == false

答案 2 :(得分:1)

好吧,关注这个:

not re.match("c", "cat")

正如您所说,re.match("c", "cat")将返回“内存中对象的位置”。这不是假的。

现在,not re.match("c", "cat")将导致:

  

不是假的

导致:

  

当然,这种思维也可以应用于逻辑条件,就像if语句的条件一样。