0

Please help! I've searched and tried for hours with no success :(

(?!.*%[^s]).* : will match any thing and only %s

but

(?!.*%\.[^0-9]f).* : will not match things and %.3f

It's for me somehow not easy to combine them together.

4

2 回答 2

2

要求还不是很清楚,但也许

(%s|%\.[0-9]+f|[^%])*

如果 % 后跟 s 或 .<digits>f,则此表达式将匹配它。否则它只匹配不是 % 的字符,因此如果 % 后面没有跟其中之一,它将被拒绝。这个正则表达式必须与整个输入相匹配,所以要么使用matches方法,要么用andMatcher包围上面的方法。这允许任意数量的或在字符串中。如果这是错误的,那么上述将不起作用。^$%s%.[0-9]+f

编辑:如果只允许一个数字.f然后+从上面删除。

于 2013-09-11T22:57:34.090 回答
0

使用双重否定!

(?!.*%(?!s|\.[0-9]+f)).*

%因此,如果后面是s或有效的浮点表达式(如%.3f),嵌套的负前瞻将导致外部负前瞻失败。

您可能希望在此处添加字符串锚点的开头,以确保您不会获得部分匹配。

示例:http ://rubular.com/r/VTzJEUAlpb

于 2013-09-11T22:44:21.750 回答