我为数据“0x7fffffffe956 \”foobar \“”创建了一个正则表达式(“/ ^(0x [0-9a-fA-F] + \\ s *)\”/“),期望匹配”0x7fffffffe956 \ “”
这种格式/ ^(0x [0-9a-fA-F] + \ s *)\“/适用于regex101.com。我无法使用类似的GLib.Regex工作。这是一个快速测试说明问题。
public void test_regex() {
//REFER:https://developer.gnome.org/glib/stable/glib-regex-syntax.html
try {
GLib.MatchInfo mi;
int start_pos;
int end_pos;
string test_str="0x7fffffffe956 \"foobar\"";
Regex _regex=new Regex("/^(0x[0-9a-fA-F]+\\s*)\"/");
bool bResult=_regex.match(test_str, 0, out mi);
expect(bResult==true,"%s match result[%s]",test_str,bResult.to_string());
if (bResult){
bResult=mi.fetch_pos(1, out start_pos, out end_pos);
expect ( bResult,"mi.fetch_pos(1) result[%s] start_pos[%d] end_pos[%d]",bResult.to_string(),start_pos, end_pos);
}
}
catch(Error e) {
catch_exception(e, "test_regex");
}
}
我的测试结果仍然失败:
UT_TestSuite start
GTest: run: /UTGdbExpansion
DBUG UT_Main.vala:90: Running test:Test Regex strings
DBUG UT_Main.vala:41: expect:UT_GdbExpansion.vala:71: 07fffffffe956 "foobar" match result[false] result[false]
除了要求所有转义字符加上'\'前缀之外,我还没看到什么?
答案 0 :(得分:1)
您不应该包含首字母和尾随/
。如果它们包含在引号中,则假定它们是正则表达式的一部分。