格式化Java.Util.Scanner的Regex



我想知道如何格式化这个表达式以在Java:[^#]+[#](一个或多个字符不是#后面跟着#(中工作

使用regexr.com(我最喜欢的regex工具(,这个表达式将从这个输入文本中获得以下匹配项:

输入:

aBc def AbC def dfe ABC
#
123
#

匹配:

aBc def AbC def dfe ABC
#
123
#

然而,当使用Scanner.next("[^#]+[#]")时,我得到了InputMismatchException,我认为它没有找到任何匹配?我需要转义字符吗?在C#中,我通常使用字符串文字@来避免这个问题。

关于java Scanner和regex,我缺少什么?谢谢

我的解决方案是使用Pattern和Matcher类而不是扫描仪。scanner类在Stdin或字符串中的行为与预期不符,并且无法基于regex(使用hasNext(Regex)next(Pattern)方法(获取匹配项。如果我读得更多,并发现为什么我会在这里发帖。

以下操作成功地从字符串中提取了每个单词(在本例中是一个连续的字母顺序(:

Pattern wordPattern = Pattern.compile("\p{Alpha}+");
Matcher wordFinder = wordPattern.matcher(lines.toString());
while (wordFinder.find()){
currentWord=wordFinder.group().toLowerCase();
AddWord(currentWord);
}

posix"\p{Alpha}+"也可以用[a-zA-Z]+代替

最新更新