2017-03-01 71 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

是的,它确实有道理。再次感谢你!我会采纳这个想法。 –

相关问题