You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中通过指定单组正则将字符串分割为两组?

要获取第二组(所有匹配分隔符正则的部分拼接结果),你可以用regex crate提供的find_iter方法,它能遍历字符串中所有匹配正则的子串,之后把这些子串拼接起来就行。

直接上代码示例:

use regex::Regex;

fn main() {
    let text = "123abcdef456ghj789";
    let re = Regex::new(r"\d+").unwrap();

    // 你已经实现的第一组:非分隔符部分拼接
    let text1 = re.split(text).join(""); // abcdefghj
    
    // 获取第二组:所有匹配分隔符的部分拼接
    let text2 = re.find_iter(text)
        .map(|match_result| match_result.as_str())
        .collect::<String>(); // 123456789
    
    println!("第一组:{}", text1);
    println!("第二组:{}", text2);
}

如果你的项目已经依赖了itertools,也可以用它的join方法来拼接,写法更简洁:

use itertools::Itertools;
use regex::Regex;

fn main() {
    let text = "123abcdef456ghj789";
    let re = Regex::new(r"\d+").unwrap();

    let text2 = re.find_iter(text)
        .map(|m| m.as_str())
        .join(""); // 123456789
}

原理很简单:find_iter会逐个找出字符串中所有符合正则\d+的子串,再通过map把每个匹配结果转换成字符串切片,最后用collect或join把这些切片拼接成完整的字符串,就是你要的第二组内容。

内容的提问来源于stack exchange,提问作者mdcq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:50