我该如何检查这个组合

时间:2015-03-03 12:43:54

标签: python regex

我必须检查给定的字符串是否具有特定的字符组合。 该字符串应包含(在regexp中): -

(.*)->(.*)

但问题是我想在箭头两侧至少有一个默认字符,'->' 示例: -

('a->b') ---> True
('->b') ---> False
('a->') ---> False
('->') ---> False

2 个答案:

答案 0 :(得分:4)

你可以这样做:

(.+)->(.+)

(.{1,})->(.{1,})

{1,} ...表示最小无限次的最小1倍。

答案 1 :(得分:2)

您需要指定->旁边必须至少有一个字符,它是+的用途,因此您可以使用以下模式:

r'.+->.+'

注意 *将匹配零个或多个字符!为了更好地理解,请查看以下图表:

.+->.+

Regular expression visualization

Debuggex Demo

.*->.*

Regular expression visualization

您也可以对模式使用分组,但根据您的regex function,结果可能会有所不同,您也可以使用?

另一种解决方案:

r'(.+->.+)'
r'(.+)->(.+)'
r'.+?->.+?'
  

+?在一次和无限次之间匹配,尽可能少,根据需要进行扩展

     

+在一次和无限次之间匹配,尽可能多次根据需要回馈

同样,评论.+中提及的任何字符都会匹配,例如空格,如果你没有这样的话,你可以使用\w(匹配任何单词字符[a-zA-Z0-9_] )或\s(\ S匹配任何非空格字符[^\r\n\t\f ]