我想为扫描仪指定一个分隔符,该分隔符在某些模式上拆分,但不会从令牌中删除该模式。我似乎无法完成这项工作,因为正则表达式识别的任何内容也会作为分隔符的一部分被吃掉。有什么建议么?
我的具体问题,我的文件看起来像:
text/numbers mix
numbers
numbers
text/numbers mix
numbers
numbers
numbers
.
.
我想从文本/数字混合+行中分离出来,直到下一个文本/数字混合。我有正则表达式来识别它们,但如前所述,使用它作为分隔符会吃掉我想要的部分内容。
编辑:代码添加:
static final String labelRegex="\\s*[^01\\s*]\\w+\\s*";
static final Pattern labelPattern = Pattern.compile(labelRegex, Pattern.MULTILINE);
是我用来识别文本/数字位的模式(我知道我的数字行包含由空格分隔的所有 1/0)。
当我初始化扫描仪时:
stateScan = new Scanner(new BufferedReader(new FileReader(source)));
stateScan.useDelimiter(labelPattern);
吃掉标签,然后离开行。我目前有一个工作实现,它在来自同一源的两个缓冲文件读取器上启动两个扫描仪,一个按状态拆分,另一个按标签拆分。我真的很希望它只是一个吸引人的标签+状态。