多个空格的正则表达式

一、借鉴别人:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test {
    public static void main(String[] args) {
         
        String str = "  kk kkk klaf    fsaff fsge tg sagh ger fsaga   ";
        //测试的字符串
         
        String regex = "\\s+";
        //表示一个或多个空格的正则表达式
         
        str = str.trim();
        //去掉字符串开头和结尾的空格
         
        String str1 = str.replaceAll(regex, "");
        //去掉所有的空格
         
        String str2 = str.replaceAll(regex, " ");
        //把一个或多个空格替换成一个空格
         
        System.out.println(str);
        System.out.println(str1);
        System.out.println(str2);
    }
}

输出结果如下:

1
2
3
kk kkk klaf    fsaff fsge tg sagh ger fsaga
kkkkkklaffsafffsgetgsaghgerfsaga
kk kkk klaf fsaff fsge tg sagh ger fsaga


总结:

    \s* 表示若干个空格(可以是0个)。

    \s+ 表示一个或多个空格


二、我的案例:

    有个txt文本,里面有一些字符串,以空格隔开,现在想要读取其中的文本,组成一个数据结构。。

我们发现,里面每行数据是一组,整体又是一组,,字符串之间有若干空格,如LinkedList<LinkedList<String>>


代码:

public LinkedList<LinkedList<String>> getContentFromTxt(String filePath) {
    LinkedList<LinkedList<String>> linkedList = new LinkedList<LinkedList<String>>();
    BufferedReader bufferedReader = null;
    try {
        bufferedReader = new BufferedReader(new FileReader(filePath));
        String lineString = "";
        String[] lineArray = null;
        String regex = "\\s+";
        while ((lineString = bufferedReader.readLine())!=null) {
            lineArray = lineString.split(regex);
            if(lineArray.length < 1){
                continue;
            }
            LinkedList<String> innerList = new LinkedList<>();
            for (String str : lineArray) {
                if("".equals(str) || str==null){
                    continue;
                }
                innerList.add(str);
            }
            linkedList.add(innerList);
        }
        bufferedReader.close();
        fileReader.close();
    }catch (Exception e){
        System.err.println("异常");
    }
    return linkedList;
}
运行结果:



### 关于正则表达式匹配空格的用法 正则表达式是一种强大的工具,用于字符串模式匹配。以下是几种常见的正则表达式匹配空格的方式及其具体含义: #### 半角空格匹配 可以使用简单的字符表示来匹配半角空格: ```regex ``` 这会精确匹配单个半角空格[^1]。 #### 开头处的多个半角空格匹配 如果希望匹配行首的一个或多半个角空格,则可采用如下形式: ```regex ^ + ``` 其中,“`^`”代表行首位置,“`\+`”意味着匹配一个或更多连续的半角空格[^1]。 #### 整行仅由半角空格组成的情况 对于完全由半角空格构成的一整行数据,可以用此方式实现匹配: ```regex ^ +$ ``` 这里“`$`”标记的是行尾的位置。“`^ +$`”整体表明该行从开始到结束都只包含至少一个以上的半角空格。 #### 包含Tab键在内的空白字符处理 当需要考虑不仅限于普通的半角空格还包括制表符(`\t`)时,应扩展定义域至这些可能存在的空白符号范围内: ```regex ^[ \t]+$ ``` 这个模式允许识别那些全是由半角空格或者tab组成的整个行的内容。 #### 所有类型的空白字符通用解决方案 为了覆盖更广泛意义上的空白概念——包括但不限于水平空间(如ASCII中的SPC)、垂直跳转(VT)、换页(FF)以及回车(CR)/换行(LF),推荐利用预定义好的特殊序列\s来进行操作: ```regex \s+ ``` 这里的“`\s`”特别指代任何种类的标准空白字符,并且通过附加量词“`+`”,我们能够捕捉一系列相连的此类单元[^1]。 #### 排除空白字符的选择 有时候我们需要获取除了各种形式的空间之外的一切其他成分,在这种情况下就可以构建否定型集合表达式: ```regex [^\s]+ ``` 它告诉引擎去寻找不含有任何形式空白的部分并将其作为单独片段提取出来。 #### Java 实现去除字符串中的所有空白字符 下面展示了一个基于Java语言的实际应用案例,演示怎样运用正则表达式的功能清除给定输入串里的全部空白类项目: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static String removeWhitespace(String input){ if(input != null && !input.isEmpty()){ Pattern pattern = Pattern.compile("\\s*|\\t|\\r|\\n"); Matcher matcher = pattern.matcher(input); return matcher.replaceAll(""); } else{ return input; } } public static void main(String[] args){ System.out.println(removeWhitespace(" Hello\tWorld\n! ")); } } ``` 上述代码段展示了如何创建一个方法removeWhitespace()用来接受任意String参数并将之内的所有空白移除掉再返回干净版本的结果[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值