如果我要将扫描仪的定界符设置为scanner.useDelimiter("\\\\p{Punct}"); 但不希望将引号包含在该列表中,是否有一种简单的方法可以排除引号?

我试图做s.useDelimiter("(\\\\p{Digit}|\\\\s|\\\\p{Punct}&&[^"])+");但括号中的引号将for括起来引号。

#1楼 票数:3 已采纳

您可以调用方法Scanner#useDelimiter(Pattern)

scanner.useDelimiter(Pattern.compile("[\\p{Punct}&&[^\"]]"))

[[\\\\p{Punct}&&[^\\"]]匹配\\\\p{Punct}覆盖的所有字符,但已转义的双引号除外。

#2楼 票数:1

这称为字符类减法 ,请参阅Java Trail:[正则表达式]字符类

最后,您可以使用减法来否定一个或多个嵌套字符类 ,例如[0-9 && [^ 345]]。 本示例创建一个单个字符类,该字符类匹配从0到9的所有字符,数字3、4和5除外。

对于给定的请求,这是模式[\\p{Punct}&&[^"]][\\p{Punct}&&[^"]]转义为字符串文字)。

  ask by btrballin translate from so

未解决问题?本站智能推荐:

2回复

设置多个定界符的语法?

我想设置一个定界符,以便仅获得Java源代码中的单词。 因此,诸如() ,; = <> 空格等标点符号将被忽略。 我的目标是读取Java文件的源代码,并且仅检测变量名称,而不检测变量类型。 但是标点符号有时也是变量名的一部分,因此我必须将其阻止。 例如:public s
3回复

如何使用定界符排除括号?

说我有这个字符串:“(hello)(world)” 我将如何使用.useDelimiter()方法获取在单独的行中打印hello和world的输出? 我看到了许多定界符模式示例,它们似乎都在useDelimiter的参数中使用了奇怪的语法。
1回复

在方法中使用定界符(Java)

我必须从文本文件的一行中读取输入: 并将其发送到将构建销售对象的方法,该对象的第一行是产品代码,第二个是已售数量。 现在,我的代码使用第一个数字,创建一个Sales对象并将其设置为两者,然后使用下一个数字,创建一个Sales对象并将其设置为产品代码和已售数量。 这是我的输出(忽略“测试
1回复

带扫描仪的多个定界符

我正在尝试读取多行文件。 内容采用以下格式: ( 0, 250, 6.4545, 250 )我试图使用use.Delimiter()函数,例如 我收到以下异常: 我认为不匹配可能是因为扫描仪功能无法识别定界符。 有人可以告诉我我是否在声明分隔符时出错了吗?
2回复

如何使用定界符隔离单词(Java)

我正在编写一个程序,该程序扫描文本文件,然后将每个单词写入Hashmap。 Scanner类具有默认的空间分隔符。 但是我最终将自己的单词存储在标点符号上。 我希望扫描仪将句点,昏迷和其他类型的常见标点符号识别为停止令牌的标志。 这是我尝试过的: 扫描程序基本上忽略了所有空格,即使
3回复

使用定界符组织集合

是否每隔一次出现定界符就会使用定界符? 例如,您有一组用逗号分隔的字符串,如下所示:(是,2,我,15,面,9)我希望将单词与紧随其后的数字配对,然后将上面的字符串分隔为以下:((是,2),(我,15),(脸,9))。 我为此使用了一个自定义列表,因此实际上我添加了每个元素[例如。 (是
1回复

如何使用定界符查找行尾?[重复]

这个问题已经在这里有了答案: 如何确定扫描仪的行尾? 4个答案 我正在尝试阅读此模式... Scanner.useDelimiter是什么? 该输入是: 489 490-1; 491-1; 492-1; 493-1; 494-1; 495-1; 496-
3回复

我将如何使用整数定界符?(Java)

因此,我尝试使用扫描仪读取文件。 该文件包含两个镇的数据,并且它们之间的距离在每行上都遵循它们。 像这样: 埃布尔,圭拉,90岁 我试图让每个城镇的人,允许重复。 这是我到目前为止的内容: 现在,程序将打印出每条信息,无论它是城镇名称还是整数值。 像这样: bor 盖