参考:正则表达式(Regular Expression) — Chuanqi 的技术文档
" | \" |
\ | \\ |
. | \. |
一、函数细节
1. GlobalReplace()
RE2::GlobalReplace(str, pat, new_sub_str ):将句子str中匹配到的子串替换为new_sub_str
std::string aInput = "~/Test (Folder)/";
RE2::GlobalReplace( &aInput, "(<|>|\\||\\:|\\(|\\)|&|;|\\s)", "\\\\0" );
~/Test\ \(Folder\)/
替换为
~/Test\0\0Folder\0
2. PartialMatch()
RE2::PartialMatch("hello:1234", pattern, &s, &i):将匹配的组内容放到s、i中
RE2 pattern("(\\w+):(\\d+)", RE2::Quiet);
assert(RE2::PartialMatch("hello:1234", pattern, &s, &i)); // 成功匹配
#include <re2/re2.h>
#include <iostream>
#include <assert.h>
int
main(void)
{
int i;
std::string s;
assert(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s, &i));
assert(s == "ruby");
assert(i == 1234);
// Fails: "ruby" cannot be parsed as an integer.
assert(!RE2::FullMatch("ruby", "(.+)", &i));
// Success; does not extract the number.
assert(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s));
// Success; skips NULL argument.
assert(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", (void*)NULL, &i));
// Fails: integer overflow keeps value from being stored in i.
assert(!RE2::FullMatch("ruby:123456789123", "(\\w+):(\\d+)", &s, &i));
std::cout << "Ok" << std::endl;
return 0;
}
3. re2::StringPiece
RE2返回的是匹配的字符串,如果需要知道匹配的偏移量,则将结果存储在re2::StringPiece
而不是std::string
中, .data()
的值将指向原始字符串。
考虑这个程序。
在每个测试中,result.data()
是指向原始const char*
或std::string
的指针。
二、Options设置
set_one_line (1):"^$"开关可用