Android Regexp将logcat简短格式与g_regex_match_simple匹配
我正在尝试为各种文本格式的logcat日志编写wireshark解析器 要做到这一点,我需要检测我正在阅读的日志类型,然后提取值得尊敬的部分。我原以为使用正则表达式就可以了,但显然不行 这是我的正则表达式:Android Regexp将logcat简短格式与g_regex_match_simple匹配,android,regex,glib,Android,Regex,Glib,我正在尝试为各种文本格式的logcat日志编写wireshark解析器 要做到这一点,我需要检测我正在阅读的日志类型,然后提取值得尊敬的部分。我原以为使用正则表达式就可以了,但显然不行 这是我的正则表达式: [IVDWE]/.*\(\s*[0-9]*\):\s.* 由于它应该是Perl兼容的,所以我从命令行使用Perl进行了尝试,它似乎可以工作。然而,当加载一行时,例如 I/bdAddrLoader( 184): option : f=/persist/bluetooth/.bdaddr
[IVDWE]/.*\(\s*[0-9]*\):\s.*
由于它应该是Perl兼容的,所以我从命令行使用Perl进行了尝试,它似乎可以工作。然而,当加载一行时,例如
I/bdAddrLoader( 184): option : f=/persist/bluetooth/.bdaddr
对于g_regex_match_simple
,表达式与开口圆括号不匹配。我试着用1-4\
来逃避它,但没有成功
编辑:
原来我试过
\
、'\`、\\\\\
版本,但不知何故错过了\
。它对我有效,有两个反斜杠:
#include <glib.h>
int
main(int argc, char *argv[]) {
gboolean res = g_regex_match_simple ("[IVDWE]/.*\\(\\s*[0-9]*\\):\\s.*",
"I/bdAddrLoader( 184): option : f=/persist/bluetooth/.bdaddr",
0, 0);
g_message ("%s", res ? "true" : "false");
return 0;
}
#包括
int
main(int argc,char*argv[]){
gboolean res=g\u regex\u match\u simple(“[IVDWE]/.\\\(\\s*[0-9]*\\):\\s.*”,
“I/bdAddrLoader(184):选项:f=/persist/bluetooth/.bdaddr”,
0, 0);
g_消息(“%s”,res?“true”):“false”);
返回0;
}
不确定g\u regex\u match\u simple的定界符是如何工作的。但是,如果它们使用通用的/
定界符,则需要使用/
来转义/
。请先尝试使用g\u regex\u new
编译正则表达式。@Sam:在我编写该部分时,直到打开圆括号([IVDWE]/.
)他正在工作。问题从大括号开始…很有趣,抱歉我帮不上忙--没有任何Android regex经验。结果证明,在尝试多次转义时,我一定跳过了双“\`版本。对此表示抱歉,并感谢您的帮助:)