我必須檢查給定的字符串是否具有特定的字符組合。 該字符串應該包含(在正則表達式): -如何檢查此組合
(.*)->(.*)
但問題是,我想上的箭頭的兩側,即'->'
例子至少一個默認的字符: -
('a->b') ---> True
('->b') ---> False
('a->') ---> False
('->') ---> False
我必須檢查給定的字符串是否具有特定的字符組合。 該字符串應該包含(在正則表達式): -如何檢查此組合
(.*)->(.*)
但問題是,我想上的箭頭的兩側,即'->'
例子至少一個默認的字符: -
('a->b') ---> True
('->b') ---> False
('a->') ---> False
('->') ---> False
您需要指定->
旁邊必須至少有一個字符,它的用途是+
,因此您可以使用以下模式:
r'.+->.+'
注意即*
將匹配零個或多個字符!爲了更好的理解看下面的圖:
.+->.+
.*->.*
你可以使用你的模式分組太多,但根據您的regex function結果可能是不同的,你也可以使用?
。
另一個解決方案:
r'(.+->.+)'
r'(.+)->(.+)'
r'.+?->.+?'
+?
之間一個和無限的比賽時間,如幾次儘可能,擴大需要。
+
匹配一次和無限次,儘可能多的次數,根據需要給予回覆。
而且在評論中提到.+
將匹配任何字符,如空格,如果你沒有這樣的事情,你可以使用\w
(匹配任何單詞字符[a-zA-Z0-9_]
)或\s
(\ S匹配任何非空白字符[^\r\n\t\f ]
)
必須有一個?在那裏。 – 2015-03-03 12:50:36
這也將匹配一個空白空間'' - > b'' – 2015-03-03 12:51:34
這真的很有幫助.. – 2015-03-03 12:53:20
你可以這樣做:
(.+)->(.+)
或
(.{1,})->(.{1,})
{1,}
...意味着最小無限次的1倍。
它實際上是'('a' - >'b')'還是'a-> b'? – thefourtheye 2015-03-03 12:44:50
然後將*改爲+。 – 2015-03-03 12:45:56
抱歉,該錯誤 – 2015-03-03 12:46:03