1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use regex::Regex; use std::io::{self, BufRead}; /// Extracts a pattern specified by `regex` from `input`. pub fn urlex(mut input: impl BufRead, regex: Regex) -> io::Result<Vec<String>> { let mut buf = String::new(); let mut ret = Vec::new(); loop { buf.clear(); if input.read_line(&mut buf)? == 0 { break; } let buf = buf.trim_end(); for m in regex.find_iter(&buf) { let s = m.as_str(); ret.push(s.to_string()); } } Ok(ret) }