我在java中使用了REGEX模式(如下所示):
表示字符串: 它工作正常。但是当我尝试使用以下模式时:
表示字符串:str =
抱歉,图片上传。看起来a00 []中的字符'[]'在浏览器上的编码方式不同。有什么方法以不同的方式阅读该角色?相同的字符在记事本++中有不同的表示。我正在使用RXTX和inputStream.read(readBuffer)来读取数据。有没有什么办法可以在java中更新我的编码方法来克服这个问题? http://i.imgur.com/sdUjS.jpg i.imgur.com
P.S:对图像描述感到抱歉 - 如果输入图像,我就无法表示该字符。 当我复制粘贴该字符时,它变成一个空白区域。
答案 0 :(得分:2)
奇怪的符号(└)看起来像是用某些字体表示ASCII 3。
在Regex中,\b
匹配单词边界。也就是说,在字母数字和非字母数字字符之间。它适用于第一种情况,因为在匹配的子字符串之前有一个数字(“9”),在它之后有一个感叹号(“!”)(它是一个非字母数字字符)。
在第二种情况下,您将感叹号更改为字母,因此不再有从字母数字到非字母数字的转换。
解决方案是扩展正则表达式,使其也匹配符号和数字:
Pattern.compile("(\\x03\\d)(a)\\w*(?=\\x03\\d)");
我使用\\x03\\d
来匹配代码。最后一部分(?= )
是前瞻性的。它检查它是否匹配,但不消耗它。就是这样,所以你连续做多个匹配。
一个更简单的选择,就是将字符串拆分为“└”,然后检查这些部分。
s.split("\u0003")