Java正则表达式之截取字符串

本文通过一个具体的例子展示了如何使用正则表达式从复杂的字符串中快速准确地提取所需信息,对于处理大量文本数据尤其有用。
  • 正则表达式很强大,熟悉正则表达式可以少些很多代码。常见的有,验证用户名/密码是否合法,截取字符串等。这篇文章主要围绕截取字符串做个简单的介绍;

假设有个需求:在一长段乱七八糟的字符串中截取需要的信息。
这里有一个乱七八糟的字符串:fjsdh(12345678)&dasdas
需要截取的信息:12345678
如果用常规的Java代码去截取的话可能会比较耗时,用正册去匹配的话会非常方便;
直接上代码了:

package com.test.laibo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestMain {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String strTest = "fjsdh(12345678)&dasdas";
        String strReg = "[\\d]*";
        Pattern p = Pattern.compile(strReg);
        Matcher m = p.matcher(strTest);
        while (m.find()) {
            System.out.println(m.group(0));
        }
    }

}

输出结果:
这里写图片描述

是不是很方便,可以根据自己的需求该正则表示式;

### 使用 Java 正则表达式截取指定字符前的内容 在 Java 中可以利用 `Pattern` 和 `Matcher` 类来处理正则表达式的匹配操作。对于想要获取特定分隔符之前部分的需求来说,可以通过定义合适的模式并应用这些类实现目标。 当希望提取某个特殊字符之前的子串时,一种方法是在该字符处进行分割而不捕获它本身。下面是一个具体的例子,展示如何通过给定的终止符号(比如连字符 `-` 或者其他任何标志性的结束标记),获得其左侧的所有内容: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractBeforeChar { public static String getSubstringBeforeLast(String input, char delimiter) { Pattern p = Pattern.compile("^(.*?)" + Pattern.quote(Character.toString(delimiter))); Matcher m = p.matcher(input); if(m.find()){ return m.group(1).trim(); }else{ // 如果未找到指定字符,则返回原字符串 return input.trim(); } } public static void main(String[] args){ System.out.println(getSubstringBeforeLast("hello-world-example", '-')); // 输出 "hello" System.out.println(getSubstringBeforeLast("file.name.ext", '.')); // 输出 "file" System.out.println(getSubstringBeforeLast("no_delimiter_here", '_')); // 输出整个输入字符串 } } ``` 此代码片段展示了如何创建一个函数 `getSubstringBeforeLast()` 来接收两个参数:一个是待解析的原始字符串;另一个是要作为边界条件的单个字符。这里使用了非贪婪匹配 `(.*?)` 确保尽可能少地消耗字符直到遇到第一个符合条件的位置[^2]。 为了使解决方案更加灵活通用,在实际项目开发过程中可能还需要考虑更多细节情况,例如多个相同分隔符的存在、忽略大小写的要求或是更复杂的模式需求等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值