对于给定的输入字符串和给定的模式 K,我想从字符串中提取每次出现的 K(或其中的一部分(使用组))并检查整个字符串是否匹配K*
(因为它由 0 个或多个 K 组成没有其他字符)。
但我想使用正则表达式一次性完成。更具体地说,我目前正在使用 寻找模式Matcher.find
,但这不是严格要求的。
我该怎么做?
我已经找到了一个解决方案(并发布了一个答案),但想知道是否有特定的正则表达式或Matcher
功能可以解决/可以解决这个问题,或者只是有更好/不同的方法来解决这个问题。但是,即使不是,我仍然认为这是一个有趣的问题。
例子:
图案:(<[0-9]>
中的单个数字<>
)
有效输入:<1><2><3>
无效输入:
<1><2>a<3>
<1><2>3
Oh look, a flying monkey!
<1><2><3
在 2 遍中执行此操作的代码matches
:
boolean products(String products)
{
String regex = "(<[0-9]>)";
Pattern pAll = Pattern.compile(regex + "*");
if (!pAll.matcher(products).matches())
return false;
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(products);
while (matcher.find())
System.out.println(matcher.group());
return true;
}