我想解析一个字符串,其中包含单引号之间的 ASCII 字符,并且可以连续包含两个 ' 的转义单引号。
'单引号之间包含的字符串值 -> '' 等等...'
这应该导致:
包含在单引号之间的字符串值 -> ' 等等...
use nom::{
bytes::complete::{tag, take_while},
error::{ErrorKind, ParseError},
sequence::delimited,
IResult,
};
fn main() {
let res = string_value::<(&str, ErrorKind)>("'abc''def'");
assert_eq!(res, Ok(("", "abc\'def")));
}
pub fn is_ascii_char(chr: char) -> bool {
chr.is_ascii()
}
fn string_value<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, &'a str, E> {
delimited(tag("'"), take_while(is_ascii_char), tag("'"))(i)
}
如何检测转义引号而不是字符串的结尾?