现在我正在寻找的正则表达式有不同的要求,而且我自己解决它太复杂了。
我需要搜索具有以下要求的特定字符串:
字符串以“fu:and ends with”
在这些开始和结束要求之间,可以有任何其他具有以下要求的字符串:
2.1。少于50个字符
2.2。只有小写
2.3。没有尾随空格
2.4。 “fu:和另一个字符串之间没有空格。
正则表达式的结果应该是这样的情况:没有'1匹配但是没有'2/2/2/2.2/2/2.4的情况没有。
目前我有以下正则表达式:"fu:([^"]*?[A-Z][^"]*?)"
,
查找以"fu:
开头并以"
结尾的字符串,其中包含任何大写字母,如下所示:
"fu:this String is wrong cause the s from string is upper case"
我希望这一切都有道理,我试图进入正则表达式,但对于那些每天都没有使用正则表达式的人来说,这个问题似乎很复杂。
[编辑]
显然我不够清楚。我想要有“错误”的比赛。 我正在寻找这个正则表达式的补充:“fu :(?:[a-z] [a-z] {0,47} [a-z] | [a-z] {0,2})”
一些例子:
匹配:“fu:这是一场比赛”
匹配:“fu:这是匹配”
匹配:“fu:这是一场比赛”
不匹配:“fu:这不匹配”
抱歉,这不容易解释:)
答案 0 :(得分:2)
尝试以下方法:
"fu:([a-z](?:[a-z ]{0,48}[a-z])?)"
这将匹配任何以"fu:
开头并以"
结尾的字符串,其间的字符串将包含1-50个字符 - 仅为小写但不能以空格开头也不能有尾随空格。
"fu: # begins with "fu:
( # group to match
[a-z] # starts with at least one character
(?: # non-matching sub-group
[a-z ]{0,48} # matches 0-48 a-z or space characters
[a-z] # sub-group must end with a character
)? # group is not required
)
" # ends with "
编辑:如果您还需要一个空字符串匹配,即完整字符串为"fu:"
,您可以在结尾添加另一个?
正则表达式中的匹配组:
"fu:([a-z](?:[a-z ]{0,48}[a-z])?)?"
我保持两个正则表达式分开(一个允许字符串中的1-50个字符,一个允许0-50个)以显示细微差别。
编辑#2 :要匹配上述的反向,即 - 要找到与所需格式不匹配的所有字符串,您可以使用:
^((?!"fu:([a-z](?:[a-z ]{0,48}[a-z])?)?").)*$
这将明确匹配与该模式不匹配的任何行。因此,这也将匹配不包含"fu:
的行 - 如果这很重要。
唯一能让我真正匹配上述内容并且仍然包含"fu:
和"
的锚点的方法是明确尝试匹配失败的规则:
"fu:([^a-z].*|[^"]{51,}|[a-z]([^"]*?[A-Z][^"]*?)+|[a-z ]{0,49}[ ])"
此正则表达式将匹配以不小写a-z
字符开头的任何内容,任何超过50个字符的字符串,包含大写字母的任何字符串或任何包含尾随字符的字符串空白。对于每个附加规则,您需要更新正则表达式以匹配所需的相反。
我的建议是,无论您使用何种语言,都要匹配实际符合您要求的所有输入字符串 - 如果没有匹配,那么该字符串必须违反您的规则。
答案 1 :(得分:0)
试试这个:
"fu:(?:[a-z][a-z ]{0,47}[a-z]|[a-z]?)"
答案 2 :(得分:0)
"fu:([^A-Z" ](?:[^A-Z"]{0,48}[^A-Z" ])?)"
上述正则表达式应符合指定的要求。
答案 3 :(得分:0)
这可能就是你所需要的
"fu:([a-z](?:[a-z ]{,48}[a-z])?)"