我想通过在Rust中只为一个组提供正则表达式来将字符串划分为两个组。
对面组的正则表达式不知道。我只知道分隔符的正则表达式。
例如,使用正则表达式\d+
和以下字符串
123abcdef456ghj789
我想得到这两个字符串
abcdefghj
以及
123456789
使用regex
和itertools
板条箱,我可以得到这样的第一组
let text = "123abcdef456ghj789";
let re = Regex::new(r"\d+").unwrap();
let text1 = re.split(text).join(""); //abcdefghj
第二组怎么办?
2条答案
按热度按时间juzqafwq1#
您可以得到非常类似的所需结果:
.find_iter()
以迭代器的形式返回所有的匹配项,然后你可以调用.as_str()
来得到完全匹配的文本,当然也可以像之前一样使用itertools中的.join()
。playground上的完整示例。
不过,如果有一个方法可以返回分离分区的元组,那就更好了。
这将是很好的,当然也是可能的,因为匹配返回了在一次传递中对文本进行切片所需的所有信息。
playground上的完整示例。
368yc8dk2#
您可以使用partition基于 predicate 创建两个集合。