2017-03-01 72 views
-1

我在尋找一個正則表達式,字符###只能在文字字符串中出現一次。#和##只能在文字字符串中出現一次

應該匹配:

a#abc 
a#bc##e 
a##bc#e 
a##e 

但它應該是不符合要求的約:

a#a#b#c 
a##bc##e 
a##bc##e##d 
a###e 
+0

是一個沒有被認爲是正確的字符串? – Aaron

+0

對於簡單的子字符串匹配,這似乎很簡單。它是否需要成爲正則表達式? –

+1

什麼是編程語言? – RomanPerekhrest

回答

2

您可以使用下面的正則表達式,這兩種模式的交替組成:

  1. ##匹配,則可能出現單個#

  2. #匹配,然後##可能出現

^[^#]*(?:##[^#]*#?|#[^#]*(?:##)?)[^#]*$ 

如果正則表達式應該匹配字符串沒有任何#,才使整個交替可選:

^[^#]*(?:##[^#]*#?|#[^#]*(?:##)?)?[^#]*$ 
+0

好點,感謝您的關注! 這裏我想補充過濾條件。如果字符串是'null'或'#'和'##'在該字符串中不會出現一次,它也應該符合。 它也應該匹配: –

+0

@HenryChen我提供的第二個正則表達式應該可以正常工作,它可以匹配空字符串和不包含'#'的字符串 – Aaron

+0

是的,它確實有道理。再次感謝你!我會採納這個想法。 –

相關問題