我希望从用户那里获取字符串输入并提取单词或数字,如下所示:
String problem = "I'm lo#o@king t%o ext!r$act a^ll 6 su*bs(tr]i{ngs.";
String[] solve = {"I'm", "looking", "to", "extract", "all", "6", "substrings"};
基本上,我想提取数字和单词,完全不考虑标点符号(撇号除外)。我知道如何获取单词和字符串,但我似乎无法弄清楚这个棘手的部分。
最佳答案
你可以像下面这样做。
String s = "I'm lo#o@king t%o ext!r$act a^ll 6 su*bs(tr]i{ngs.";
String parts[] = s.replaceAll("[^\\s\\w']|(?<!\\b)'|'(?!\\b)", "").split("\\s+");
System.out.println(Arrays.toString(parts));
输出:
[I'm, looking, to, extract, all, 6, substrings]
说明:
[^\\s\\w']
匹配任何字符,但不匹配空格、单引号或单词字符。(?<!\\b)'(?!\\b)
匹配'
仅当符号前面和后面都没有单词字符时才为符号。replaceAll
函数将所有匹配的字符替换为空字符串。最后,我们根据一个或多个空格字符对结果字符串进行拆分。
关于java - 特定的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709754/