繁体   English   中英

如何将定界符设置为“ \\\\ p {Punct}”(不包括引号)?

[英]How to set delimiter as “\\p{Punct}” excluding quotation mark?

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM