正则表达式 匹配回车转

今天在Java中想使用正则表达式来获取一段文本中的任意字符。于是很随意得就写出如下匹配规则:
(.*)
结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才发现正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符。同时,手册上还有一句话:要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式。于是我将正则表达式的匹配规则修改如下:
([.\n]*),当然,如果是在java程序中直接写到话,需要改为([.\\n]*)
结果再次运行程序,发现什么内容也取不到了。我百思不得其解,又将其修改为如下规则:
([.|\n]*) 以及 ([\n.]*)
结果还是不行,什么内容都取不到。看来点符号和换行符卯上劲了~
然后上网一查,虽然没有查出上述规则到底是什么地方出问题了,但是查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则:
([\s\S]*)
同时,也可以用 “([\d\D]*)”、“([\w\W]*)” 来表示。

在文本文件里, 这个表达式可以匹配所有的英文
/[ -~]/
这个表达式可以匹配所有的非英文(比如中文)
/[^ -~]/
/是VI里用的. 你在editplus或程序里不需要/

BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out,"UTF-8"));
bw.write("请输入:");
bw.flush();
String str=br.readLine();
bw.write("您输入的数据为:"+str);


显示结果:

璇疯緭鍏ワ細ceshi 测试
鎮ㄨ緭鍏ョ殑鏁版嵁涓猴細ceshi 锟斤拷锟斤拷

llnotice 写道
new OutputStreamWriter(System.out,"UTF-8"));
不是创建使用指定字符集的 OutputStreamWriter吗。

OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。

如果用第二个构造器的话,他使用默认的字符集(我这里是GBK),能够理解。 现在我已经用第一个构造器了,为什么不能改字符集呢?


因为控制台读进来的字符是用GBK编码的,而你用UTF-8去解码,得到的当然是乱码了~
同样控制台输出的时候需要的是GBK编码的流,而你是用UTF-8编码的,乱码also


介绍乱码 http://www.ibm.com/developerworks/cn/java/java_chinese/index.html

http://hi.baidu.com/linjk03/blog/item/10023afad8303cd9b48f311a.html 乱码问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值