如果我有文字
<page a>The cat ran#$(*#(%)#over(*@#$the(*#%
我正在使用扫描仪和useDelimiter方法,正则表达式允许我提取:
<page a>
The
cat
ran
over
the
到目前为止,我已经尝试过:
s.useDelimiter("[^a-zA-Z]|^(<.*>$)");
但这不会使尖括号保持完整,它会将它们取出(显然它与a-zA-Z相匹配。
答案 0 :(得分:1)
您是否尝试过切换这两个选项?
s.useDelimiter("^(<.*>$)|[^a-zA-Z]");
答案 1 :(得分:1)
问题不在于分隔符,而在于它是令牌识别之一。你的代币是:
<page a>
The
cat
ran
over
the
编码“&lt;”分隔符集中任何位置的字符几乎确保它们不会在返回的标记中。如果你知道<page a>
出现在某个字符串的开头(我意识到这可能是一个无效的假设),你可以这样做:
Scanner s = new Scanner(...);
s.useDelimiter("[^\\w]");
// Find an angle bracket token, if one is next.
String token = s.findInLine("<[^.]*>");
if (token != null)
// process angle bracket token
token = s.next(); // get next delimited token
...
显然,这是一个快速的黑客(虽然我测试了它)。但我认为你可以轻松扩展它。