Rust 正则表达式模式 - 无法识别的转义模式

n1_*_*n1_ 4 regex rust

我确实有以下字符串:

\"lengthSeconds\":\"2664\"
Run Code Online (Sandbox Code Playgroud)

我想与这个正则表达式匹配:

Regex::new("lengthSeconds\\\":\\\"(\\d+)\\\"")
Run Code Online (Sandbox Code Playgroud)

我什至试过这个:

Regex::new(r#"lengthSeconds\":\"(\d+)\""#)
Run Code Online (Sandbox Code Playgroud)

但我得到了这个:

regex parse error:
lengthSeconds\":\"(\d+)\"
             ^^
error: unrecognized escape sequence
Run Code Online (Sandbox Code Playgroud)

正则表达式模式有什么问题?

Ste*_*ken 6

通过使用 r#..#,您将字符串视为原始字符串,因此不处理任何转义。但是,由于反斜杠在 Regex 中是特殊字符,因此 Regex 表达式本身仍然需要您转义反斜杠。所以这

Regex::new(r#"\\"lengthSeconds\\":\\"(\d+)\\""#)

是你想要的。

或者,你可以写

Regex::new("\\\\\"lengthSeconds\\\\\":\\\\\"(\\d+)\\\\\"").unwrap();

产生相同的结果。

在 Rust Playground 上查看此示例