cre*_*lem 6 regex escaping rust
我有一个包含许多转义字符的正"则表达式\。我总体测试了我的正则表达式,您可以找到我的工作现场演示。我将正则表达式转移到 Rust。这是一个不起作用的简化示例:
extern crate regex; // 1.1.0
use regex::Regex;
fn main() {
let re = Regex::new(r#"123 \\""(\w+)"#).unwrap();
let test = "123 \"PROPFIND\"";
for cap in re.captures_iter(test) {
println!("{}", &cap[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
我的示例的输出是空的,但我期望PROPFIND
正则表达式文档向我指出了原始字符串文档。我尝试了不同的逃避技术,但不知道我哪里搞砸了。
Wik*_*żew 10
你的原始模式需要写成
let re = Regex::new(r#"(\d{1,3}(?:\.\d{1,3}){3}) (\w+|-) (\w+|-) \[(.*?)\] "(\w+) (.*?) (HTTPS?)/([0-9]\.[0-9])" ([0-9]+) ([0-9]+) "(\w+|-)" "(.*?)""#).unwrap();
Run Code Online (Sandbox Code Playgroud)
当前的为:
let re = Regex::new(r#"123 "(\w+)""#).unwrap();
Run Code Online (Sandbox Code Playgroud)
简而言之,\\""您的模式中的所有内容都应该看起来像". 并确保图案位于r#"和内部"#。
请参阅Rust 原始字符串文字参考:
原始字符串文字不处理任何转义。它们以字符
U+0072(r) 开头,后跟零个或多个字符U+0023(#) 和一个U+0022(双引号)字符。原始字符串主体可以包含任何 Unicode 字符序列,并且仅以另一个U+0022(双引号)字符终止,后跟与起始(双引号)字符之前相同数量的U+0023( ) 字符。#U+0022
| 归档时间: |
|
| 查看次数: |
5476 次 |
| 最近记录: |