我需要帮助使用正则表达式。我读过Java Regex的笔记,但找不到解决问题的方法。
PROBLEM:我有一个字符串,需要在unicode字符\0、\1和\2出现时进行拆分。
尝试过
String msg ="foo\0foo\0bar\2foo\1horse"
msg.split("[\1\0\2]");以上操作非常完美(不确定是否正确使用regex),但是
String msg ="foo\0foo\0bar\2foo\1horse\1123123\0123123\21"
msg.split("[\1\0\2]");不能正常工作,因为正则表达式似乎是拾取\1k (带有k个整数),而不是只取\0、\1和\2。
有什么想法吗?
解决了问题:我发现测试中的问题是我使用了自己生成的字符串。使用\1之前的数值使字符串自动包括\1k作为字符,而不是\1。当从我的源读取时,它以字节为单位,因此有正确的\1编码。当解码和重新编码(手动)时,我犯了错误.使用原始数据解决了问题。
或者,我使用unicode \u 0001-\u0002重新编码,这也有效。谢谢你的回答。了解了一些关于Regex和unicode的知识。
发布于 2011-08-08 20:31:28
尝试使用Unicode字符文字表单(\uXXXX):
String msg ="foo\u0000bar\u0001gah\u0002zip\u0001horse\u0001123123\u0000456456\u00021";
String ss[] = msg.split("[\u0000-\u0002]");
// ss = ["foo", "bar", "gah", "zip", "horse", "123123", "456456", "1"];发布于 2011-08-08 20:31:25
我想你想
msg.split("[\u0000\u0001\u0002]");根据http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
https://stackoverflow.com/questions/6988027
复制相似问题