2011-12-26 39 views
0

我在制定一個正則表達式,其檢測的字符「%」或10(或更多)的計數尋求幫助的字符串' ='或':'以任意長度的字符串。正則表達式來計算的%或=或數:在任何長度

到目前爲止,我已經檢查了以下來源,但也似乎不太適應什麼被張貼到我的需求:

此外,我我自己嘗試了以下表達式,但它們不匹配我的字符串。 (我一直在使用 「pcretest」 檢查匹配)

  • /[%=:]{10,}/
  • /[a-zA-Z0-9](:|%|=){10,}/

任何一個可以幫助?

+2

歡迎的網站 - 請*不要轉貼*的問題。有一個在你現有的問題,你可以用它來進行更改底部的編輯鏈接。我已將兩個問題合併在一起,以便將答案合併到一個地方。你可能不得不重新接受這個問題的答案。 – BoltClock 2011-12-27 01:27:52

回答

2

如果串具有10此正則表達式匹配(或字符的詳情):%=:在其間的任何數目的其它字符:

/(?:[^%=:]*[%=:]){10}/ 

如果需要含有至少10 整個串匹配,使用這一個:

/^(?:[^%=:]*[%=:]){10}[\S\s]*$/ 

,如果他們需要是連續你沒有說。這個答案假設不是。

+0

謝謝@ridgerunner - 是的,我現在知道我的壞禮儀。我想刪除我原來的文章,因爲它沒有表明我已經做了任何研究,也沒有考慮編輯。 FWIW,你的回答幫助我。謝謝。 – James 2011-12-27 00:52:40

+1

@詹姆斯 - 沒問題。我花了一段時間在這裏學習繩索。順便說一句,你可以在發佈後編輯你的問題(和答案)給你的心中的內容。一旦你決定了最好的答案,你應該檢查它是否正確。 – ridgerunner 2011-12-27 01:41:07

+0

@BoltClock - 感謝您刪除我的重複帖子。 (不太確定那是怎麼發生的,通常我很小心這種事_D'oh!) – ridgerunner 2011-12-27 02:03:23

1

...

怎麼樣:

/[%=:]{1000,}/ 

+0

'100'或更多:-) – 2011-12-26 23:22:41

+0

不符合,不幸的是。如果我說它需要匹配這三個角色中的任何一個100次或更多次,它會有什麼區別嗎? – James 2011-12-26 23:27:43

+1

@Fredrik標題與身體不符(「1k」與「100」)。儘管如此,OP應該能夠找出任何一種方式。 – 2011-12-26 23:27:50

0

計算您輸入的長度。

然後讓另一變量,它是你白白取代的,在全球範圍,[%=:]+輸入。

計算該可變的長度,與輸入的長度比較:如果該差爲100以上,則有一個匹配;)

1
cnt = 0 
for each character in string: 
    if character is '%' or ':' or '=': 
     cnt++ 

    if cnt >= 10: # or 100 or 1000 
     SUCCESS 
     break 
+0

只要'cnt'達到10,你就應該跳出循環,以免檢查額外的字符。 – jwodder 2011-12-27 00:14:40

+0

是的,我會更新 – 2011-12-27 00:16:08

0

這將取決於你所使用的正則表達式引擎,但這應該工作:

/([%:=][^%:=]*){10,}/ 

根據您的編程語言,你可能需要對括號進行轉義,並與領先的反斜線括號(如: )。

這將匹配的你選擇的字符中的一個{「%」,「:」,「=」}接着,任選地,通過任何數量的字符不在該集合,十倍或更多倍。