// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(\n|;|^)"([^";\n]*?)"([^";\n]+?)"([^";\n]*?)"(\n|;|$)"#).unwrap();
let string = "A stable and simple RegEx, which escapes double-quotes (\") in a CSV file.
## Tests ##
\"Great thing?!*\";\"I love RegEx!\";\"And especially \"regex101.com\"!\";\"Just amazing...\"
\"Something090324*?!*\";\"Somethi\"ng090\"324*?!*\";\"Something090324*?!*\";\"Something090324*?!*\"
Ignore\"THIS\"ItIsNotARealQuote?!*;\"This\"is\"real!\";HereIsNoQuoteSymbolAtAll;This\"IsOnlyOneQuoteSymbol
CSV: Escape double-quotes (\") in quoted
## Issues ##
- Does not support embedded line breaks, but you can easily modify it to support them. Note that they are currently forbitten to be more stable.
- Does only allow \" for quoting. (Replace it in the whole RegEx to change this)
- Only works with ; as a separator. (Replace it in the whole RegEx to change this)
- Does not allow separator character inside of quotes string. Look at the following example:
\"Example \"string\"\";\"works\"
\"Example \"string\";\";\"fails\"
- Get's problems when the issue happens \"too often\", which means it shows up in cells which are directly side-by-side. You may work around this issue by running it multiple times:
\"run 1 time \";\"a string with a \"small\" issue\";\"and \"another\" one\"
\"run 2 times\";\"a string with a \"\"small\"\" issue\";\"and \"another\" one\"
- It only works with quoted strings (no single \" are escaped; only double ones)
## Changelog ##
v1.0 - 2016-01-25
- released
Author: rugk <rugk@posteo.de>";
let substitution = "\\1\"\\2\"\"\\3\"\"\\4\"\\5";
// result will be a String with the substituted value
let result = regex.replace_all(string, substitution);
println!("{}", result);
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/