Ach*_*how 8 java regex matcher
为什么第一个块可以工作但第二个块没有?
int numberOfDigits = 2;
Pattern p = Pattern.compile("[01]{"+numberOfDigits+"}");
Matcher m = p.matcher("101100101011010011111000");
while(m.find()){
System.out.println(m.group());
}
Run Code Online (Sandbox Code Playgroud)
布洛克2
Scanner scannerSegment = new Scanner("101100101011010011111000");
while(scannerSegment.hasNext(p)){
String segment = scannerSegment.next(p);
System.out.println(segment);
}
Run Code Online (Sandbox Code Playgroud)
Scanner不是使用其hasNext(Pattern pattern)方法检索模式的适当实用程序。它将检查下一个完整令牌是否具有所请求的模式。
Java API是最好的文档。
一些摘录:
hasNext() : Returns true if the next complete token matches the specified
pattern. A complete token is prefixed and postfixed by input that matches
the delimiter pattern.`
Run Code Online (Sandbox Code Playgroud)
因此,如果您将输入更改为由空格或任何其他分隔符分隔(必须在定义对象后设置其他分隔符Scanner),它将起作用。所以这应该有效(对于当前模式):
Scanner scannerSegment = new Scanner("10 11 00 10 10 11 01 00 11 11 10 00");
Run Code Online (Sandbox Code Playgroud)
即使这样也可以(对于当前模式):
Scanner scannerSegment = new Scanner("10,11,00,10,10,11,01,00,11,11,10,00");
scannerSegment.useDelimiter(",");
Run Code Online (Sandbox Code Playgroud)
编辑:扫描仪使用分隔符模式将其输入分解为标记,默认情况下与空格匹配。
| 归档时间: |
|
| 查看次数: |
2732 次 |
| 最近记录: |