今天在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 乱码问题
分享到:
相关推荐
在正则表达式中,还有其他的元字符,例如空白字符([\b\f\n\r\t\v])、换页符(\f)、换行符(\n)、回车符(\r)、制表符(\t)、垂直制表符(\v)等。这些元字符可以用于匹配特定的字符或字符串。 特定字符 在...
1. **String.prototype.match()**:返回字符串中与正则表达式匹配的所有结果。 2. **String.prototype.search()**:返回匹配项的索引位置,如果没有找到则返回-1。 3. **String.prototype.replace()**:根据提供的...
1. REGEXP_LIKE:比较一个字符串是否与正则表达式匹配 2. REGEXP_INSTR:在字符串中查找正则表达式,并且返回匹配的位置 3. REGEXP_SUBSTR:返回与正则表达式匹配的子字符串 4. REGEXP_REPLACE:搜索并且替换匹配的...
正则表达式也可以匹配第二个“a”,这必须是你告诉正则表达式引擎从第一次匹配的地方开始搜索。 特殊字符 对于文字字符,有 11 个字符被保留作特殊用途。他们是:[ ] \ ^ $ . | ? * + ( )这些特殊字符也被称作元...
### 正则表达式常用匹配知识点详解 #### 一、正则表达式的概念与作用 正则表达式是一种强大的文本处理工具,它通过定义一种文本模式来帮助我们进行字符串的搜索、替换等操作。在软件开发中,正则表达式被广泛应用于...
### 正则表达式基础知识与应用详解 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助我们完成对字符串的搜索、替换等操作。它广泛应用于各种编程语言中,如JavaScript...
正则表达式匹配规则部分讲解了如何进行基本的模式匹配,比如使用点号.来匹配任何单个字符,使用字符簇来匹配一个字符集合中的任何一个字符,以及如何通过括号和竖线来定义选择和分组。此外,还涉及到了正则表达式中...
- **量词**:量词用于控制正则表达式匹配的次数,例如 `{n}`, `{n,}`, `{n,m}`。 - **预查和回顾**:非捕获性断言 `(?!...)` 和 `(?>...)` 用于检查是否满足某些条件而不实际捕获任何文本。 - **分组与引用**:通过...
正则表达式还支持表示不可见字符,如制表符(\t)、回车符(\r)和换行符(\n)。值得注意的是,Windows 和 Unix 文件系统的换行方式不同,Windows 使用 "\r\n",Unix 使用 "\n"。 5. **正则表达式引擎的工作机制*...
正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、替换等操作,在软件开发、数据处理、网络爬虫等领域有着广泛的应用。在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的...
正则表达式定义:正则表达式是一种字符串匹配模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证字符串。它通过一套特定的语法,即正则表达式规则,来定义字符串的特征模式。在本篇文章中,我们将深入探讨正则表达式的基础知识及其应用。 1. ...
正则表达式是一种强大的模式匹配工具,可以用来描述复杂的字符模式,并且可以用来匹配各种类型的字符串。在JavaScript中,正则表达式是由一个RegExp对象表示的,可以使用一个RegExp()构造函数来创建RegExp对象,也...
使用 `\n` 来匹配换行符(LF,即 ASCII 0x0A),`\r` 匹配回车符(CR,即 ASCII 0x0D),但需要注意,`\r` 并不等同于换行符 `\n`。 在正则表达式中,可以选择使用转义字符来表示某些控制字符。例如,`\e` 用于匹配...
对于特殊字符如回车`\r`,可以直接写入,因为它们在正则表达式中没有特殊含义。 总之,Java正则表达式提供了强大的文本处理功能,结合`Pattern`和`Matcher`类,开发者可以高效地处理字符串,进行搜索、替换、分割等...
- `\r`:匹配回车符。 - `\f`:匹配换页符。 - `\v`:匹配垂直制表符。 5. **分组与引用**: - `(pattern)`:捕获模式并进行分组,可以通过`\1`、`\2`等方式引用捕获的内容。 - `(?:pattern)`:非捕获性分组,...
正则表达式是编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来执行复杂的文本检索和替换操作。在JavaScript中,正则表达式主要通过`RegExp`对象实现,可以使用构造函数`new RegExp()`或者正则表达式...
#### 八、正则表达式匹配规则 1. **基本模式匹配**:如`cat`,匹配字符串中的“cat”。 2. **字符簇**:如`[aeiou]`,匹配字符串中的任一元音字母。 3. **确定重复出现**:如`a{2,5}`,匹配连续出现2到5次的字母“a...