我不完全是一個正則表達式大師,所以我有一些困難找到一個正則表達式爲下面的情況。正則表達式的最大長度是否包含必需部分的字符串?
我想匹配形式<prefix>$rolename$<suffix>
(例如abc$rolename$def
),其具有的兩個20和<prefix>
<suffix>
最大長度可以是空的,並且可以包含任何字符的字符串。 $rolename$
部分是必需的。
應該不是很困難,但我只是無法弄清楚如何做到這一點。誰能幫我?
我不完全是一個正則表達式大師,所以我有一些困難找到一個正則表達式爲下面的情況。正則表達式的最大長度是否包含必需部分的字符串?
我想匹配形式<prefix>$rolename$<suffix>
(例如abc$rolename$def
),其具有的兩個20和<prefix>
<suffix>
最大長度可以是空的,並且可以包含任何字符的字符串。 $rolename$
部分是必需的。
應該不是很困難,但我只是無法弄清楚如何做到這一點。誰能幫我?
既然你已經使用正則表達式,爲你解釋,這裏有一個選項:
^(?!.{21,})(.*?)\$rolename\$(.*?)$
這與勒夫的回答,但一開始負前瞻。也就是說:在正則表達式匹配之前,我們檢查字符串沒有21個或更多字符。
正則表達式我最好使用將是/^([^\$]*)\$rolename\$([^\$]*)$/
,驗證串的總長度在外部。
爲什麼正則表達式?認爲簡單。根據您的語言,請使用您的語言的字符串長度的方法長度如使用Python
if len(mystring) <= 20:
if "$rolename" in mystring:
print "ok"
你的語言可能有類似的方法,如指數()找到其中一個子是一個字符串。
我真的需要一個正則表達式。如果問題很簡單,我不會問:)另請參閱我對Joachim Rendeiro的回答的評論。 – 2009-12-03 11:07:39
那麼你應該在發佈我們的問題時說明這一點。 – ghostdog74 2009-12-03 11:08:33
這正是我想要的,謝謝。我只是想知道爲什麼你需要(。*?)而不是(。*)圍繞$ rolename $。 – 2009-12-03 12:17:00
這是一個非貪婪的捕獲。我沒有測試過演出,但應該會好一點。當它找到'$ rolename $'時應該停止,而不是繼續直到結束,失敗和回溯。 – Kobi 2009-12-03 12:20:07
試想想它,'(?!{} 21)'會的工作一樣的,也是'(?=。{1,20} $)'如果你是一個樂觀主義者:) – Kobi 2009-12-03 12:25:50