【发布时间】:2014-12-27 13:50:55
【问题描述】:
我需要一种匹配“格式”字符串的方法。它应该有一个或两个%d 令牌,任何只有一个%s 令牌。最好也不允许任何其他格式化标记,例如%f 等。我自己想出了一些无法完成全部工作的中途解决方案:
.*?(\%d).*(\%(?=d|s)).* //Doesn't fit requirements
.*?(\%d).*(\%d).*(\%s).* //Doesn't allow for any ordering of the tokens
我的想法可能是寻找唯一的%s 令牌并进行环视,但我不完全确定如何去做(正则表达式不是我的强项)。这是为了使用 Java 库,我对非正则表达式解决方案持开放态度,但是正则表达式解决方案需要匹配整个字符串(而且我不希望对格式字符串进行两个/三个不同的正则表达式搜索)。
它应该匹配%d:%d:%s 和%d:%s,但不能匹配%d:%d:%d:%s 或%f:%d:%s。本质上这将是字符串的要求:
- 一个或两个
%d令牌 - 一个
%s令牌
【问题讨论】:
-
你能举个例子吗?
-
我稍微更新了我的问题@AvinashRaj
-
@Barmar 我看到的问题是我想匹配一个或两个
%d令牌。 -
您可以将其与负环视相结合,使其仅匹配指定的数字。
标签: regex