@@ -2467,6 +2467,36 @@ def _convert_int_result(self, result):
2467
2467
def _convert_rank_result (self , result ):
2468
2468
return type (self )(result )
2469
2469
2470
+ def _str_contains (self , pat , case = True , flags = 0 , na = lib .no_default , regex = True ):
2471
+ import re
2472
+
2473
+ if isinstance (pat , re .Pattern ):
2474
+ if flags != 0 :
2475
+ # fallback to python object implementation
2476
+ return BaseStringArrayMethods ._str_contains (
2477
+ self , pat , case , flags , na , regex
2478
+ )
2479
+ pat = pat .pattern
2480
+ regex = True
2481
+
2482
+ try :
2483
+ if not regex :
2484
+ result = pc .match_substring (self ._pa_array , pat , ignore_case = not case )
2485
+ else :
2486
+ result = pc .match_substring_regex (
2487
+ self ._pa_array , pat , ignore_case = not case , options = None
2488
+ )
2489
+ return self ._convert_bool_result (result , na = na , method_name = "contains" )
2490
+ except (AttributeError , NotImplementedError , pa .ArrowNotImplementedError ):
2491
+ return BaseStringArrayMethods ._str_contains (
2492
+ self , pat , case , flags , na , regex
2493
+ )
2494
+
2495
+ def _str_count (self , pat : str , flags : int = 0 ) -> Self :
2496
+ if flags :
2497
+ raise NotImplementedError (f"count not implemented with { flags = } " )
2498
+ return type (self )(pc .count_substring_regex (self ._pa_array , pat ))
2499
+
2470
2500
def _str_count (self , pat : str , flags : int = 0 ) -> Self :
2471
2501
if flags :
2472
2502
raise NotImplementedError (f"count not implemented with { flags = } " )
0 commit comments