[入门] D正则怎样匹配全角空格
tuja
2007-05-19
基于D正则和pcre有些不太一样,有时怎么也得不到相应的pattern。
比如全角空格在GBK里是\xa1\xa1 如果能打印出相应字符的内码编码(如UTF-8,gbk),则可以: char[] s = r" ";//全角空格 char[] pattern = getPattern(s); char[] getPattern(char[] s) //by qiezi { char[] result; foreach(c; s) result ~= std.string.format("\\x%x", c); return result; } 我测试了一下,用qiezi的代码得到全角空格16进制编码是\xe3\x80\x80,但却无法匹配成功 char[] s = " ";//全角空格 char[] result = std.regexp.sub(s,r"\xe3\x80\x80","ok"); writefln("result=%s,",result); //匹配失败 |
|
qiezi
2007-05-19
char[] getPattern(char[] s) { char[] result; foreach(c; s) result ~= std.string.format("\\x%x", c); return result; } |
|
tuja
2007-05-19
谢谢!
我测试了一下,全角空格是\xe3\x80\x80,但却无法匹配成功: char[] s = " ";//全角空格 char[] result = std.regexp.sub(s,r"\xe3\x80\x80","ok"); writefln("result=%s,",result); |
|
qiezi
2007-05-19
r"\xe3\x80\x80"改成"\xe3\x80\x80",既然是要用\x进行转义,还加上个r做啥呢。
|