java - 特定的正则表达式模式

标签 java regex

我希望从用户那里获取字符串输入并提取单词或数字,如下所示:

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/

相关文章:

java - 如何将 cmake 配置为仅重建 java 项目中已更改的 .java 文件?

java.lang.AssertionError 和两个实体是否相同?什么会导致这个?

Java 正则表达式匹配零次或一次

java - 传递给Java的Jstring与预期不同

java - 从 Java 列出所有 MongoDB 数据库及其详细信息

java - 获取错误 java.lang.IllegalArgumentException : unexpected url

java - 使用正则表达式将字符串拆分为 3 部分

python - SymPy 表达式包含被函数的反函数取消的函数

java - 条件正则表达式搜索

javascript - 如何在保持分隔符的同时根据空格或符号拆分字符串?