2015-03-03 38 views
-2

我必須檢查給定的字符串是否具有特定的字符組合。 該字符串應該包含(在正則表達式): -如何檢查此組合

(.*)->(.*) 

但問題是,我想上的箭頭的兩側,即'->' 例子至少一個默認的字符: -

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

它實際上是'('a' - >'b')'還是'a-> b'? – thefourtheye 2015-03-03 12:44:50

+0

然後將*改爲+。 – 2015-03-03 12:45:56

+0

抱歉,該錯誤 – 2015-03-03 12:46:03

回答

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 ]

+0

必須有一個?在那裏。 – 2015-03-03 12:50:36

+0

這也將匹配一個空白空間'' - > b'' – 2015-03-03 12:51:34

+0

這真的很有幫助.. – 2015-03-03 12:53:20

4

你可以這樣做:

(.+)->(.+) 

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

{1,} ...意味着最小無限次的1倍。