我必须检查给定的字符串是否具有特定的字符组合。 该字符串应包含(在regexp中): -
(.*)->(.*)
但问题是我想在箭头两侧至少有一个默认字符,'->'
示例: -
('a->b') ---> True
('->b') ---> False
('a->') ---> False
('->') ---> False
答案 0 :(得分:4)
你可以这样做:
(.+)->(.+)
或
(.{1,})->(.{1,})
{1,}
...表示最小无限次的最小1倍。
答案 1 :(得分:2)
您需要指定->
旁边必须至少有一个字符,它是+
的用途,因此您可以使用以下模式:
r'.+->.+'
注意 *
将匹配零个或多个字符!为了更好地理解,请查看以下图表:
.+->.+
.*->.*
您也可以对模式使用分组,但根据您的regex function,结果可能会有所不同,您也可以使用?
。
另一种解决方案:
r'(.+->.+)'
r'(.+)->(.+)'
r'.+?->.+?'
+?
在一次和无限次之间匹配,尽可能少,根据需要进行扩展。
+
在一次和无限次之间匹配,尽可能多次根据需要回馈。
同样,评论.+
中提及的任何字符都会匹配,例如空格,如果你没有这样的话,你可以使用\w
(匹配任何单词字符[a-zA-Z0-9_]
)或\s
(\ S匹配任何非空格字符[^\r\n\t\f ]
)