关于正则表达式匹配空格的问题
来源:百度文库 编辑:神马文学网 时间:2024/05/16 19:33:40
我用java自带的正则表达式工具去匹配空格的时候,会有不能匹配的情况.
想问一下,空格有多少种?以前换行的\r\n和\r和\n就把我折磨得够呛.
"\s"匹配的是哪一种空格?
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
学习了。。 mark
String pattern = "(?!abc)haha";
....看来只能用负向零宽断言了.....不过你确定是用"?!"前看的么?我怎么觉得应该是后看的啊?
负向零宽断言似乎在有"."的情况下不太好用..
比如(?
亲娘 啊
同样 (?<=X) (?
http://www.zhuaxia.com/item/599711080/
正则表达式的结构非常地复杂,上面的链接中有专家写的几个正则表达式,建议去看看。
晕死,你学的年代?不就是两个月之前吗?
全角空格:^( )+|^[\s ]+|( )+$|[\s ]+$/g
这就时候看,前看的话加?
不过"?是不是这两个和在一起的时候?比如(?
你说的那篇文章不错~还有什么好的关于regexp的文章不?
我这有篇
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
我觉得还是很不错的.
这个跟 .* 没有区别。
.* 以贪婪方式进行最大的匹配,而且在吃掉整个字符串后,开始部分的前面肯定不是 abc 了(前面是空)。
因此,(?
但是 (?<=abc).* 这样就有区别了,例如字符串是 abc123456 那这个表达式就能匹配 123456 了。
看看它是如何进行匹配的。
1,先对 (?<=abc) 进行处理,由于 (?<=abc) 匹配的是零宽度,因此从左边一个一个地走过去,直到
走到字母 c 的后面,OK,这时与 (?<=abc) 进行匹配了。
2,再对 .* 进行处理,从字母 c 的后面开始,由于 .* 能匹配几乎所有的字符。因此,表达式匹配完成,
匹配的结果就是 123456 了。
PS:那篇文章不错,不过有些语法在 Java 中不能使用,比如:内嵌注释、命名捕获、递归匹配等,
使用的时候注意一下。
哈哈,我上面贴的那个链接,是人家看《精通正则表达式》这本书的读书笔记。说到这,
要顺便提一下这本书,这本书可谓是正则表达式的登峰之作了,已经没有人再敢涉及了。
这本书中文版在这里有一章的试读下载:http://www.oreilly.com.cn/book.php?bn=978-7-121-04684-1
另外这个站点上有详细的正则表达式教程,可惜是英文的 http://www.regular-expressions.info
这个上面有好多现成的表达式 http://regexlib.com
我似乎有那本书的英文版...看着比较累..我找找实体书看看.
\s 只能匹配下面六种字符(详见 java.util.regex.Pattern 的 API DOC):
半角空格( )
水平制表符(\t)
竖直制表符
回车(\r)
换行(\n)
换页符(\f)
[\s\p{Zs}]
大家帮忙看看 !!
[code=Java][/code]public static void main(String[] args) {
Pattern p = Pattern.compile("\\b[a-zA-Z]+?\\b");
String s = "aaa bbb jj2rjo jjj 2ii oo8d 7haohsie";
Matcher m = p.matcher(s);
while (m.find()) {
p(m.group());
}
}
找到了aaa bbb jjj 我想问的是开头的aaa 哪来的\\b[a-zA-Z]+?\\b 如果有结尾有也一样\\b[a-zA-Z]+?\\b
你怎么看出来的
想问一下,空格有多少种?以前换行的\r\n和\r和\n就把我折磨得够呛.
"\s"匹配的是哪一种空格?
- AWUSOFT
- (征女友一名(深圳),有意请留言)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- anqini
- ([Kimi]--午後の紅茶)
- 等 级:
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- jiaping108
- (冰晶)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- psyl
- (Codex)
- 等 级:
学习了。。 mark
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- anqini
- ([Kimi]--午後の紅茶)
- 等 级:
String pattern = "(?!abc)haha";
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
....看来只能用负向零宽断言了.....不过你确定是用"?!"前看的么?我怎么觉得应该是后看的啊?
负向零宽断言似乎在有"."的情况下不太好用..
比如(?
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- nihuajie05
- (陆烨辰)
- 等 级:
亲娘 啊
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- chendabian
- (gare)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bao110908
- ()火龙果()
- 等 级:
-
3
4
5
同样 (?<=X) (?
http://www.zhuaxia.com/item/599711080/
正则表达式的结构非常地复杂,上面的链接中有专家写的几个正则表达式,建议去看看。
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bao110908
- ()火龙果()
- 等 级:
-
3
4
5
晕死,你学的年代?不就是两个月之前吗?
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- zt_soft
- (Get busy living)
- 等 级:
全角空格:^( )+|^[\s ]+|( )+$|[\s ]+$/g
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- magic256
- (New PG)
- 等 级:
- 对我有用[1]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- anqini
- ([Kimi]--午後の紅茶)
- 等 级:
这就时候看,前看的话加?
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
不过"?是不是这两个和在一起的时候?比如(?
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
你说的那篇文章不错~还有什么好的关于regexp的文章不?
我这有篇
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
我觉得还是很不错的.
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- jdlsfl
- (福林天下)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bao110908
- ()火龙果()
- 等 级:
-
3
4
5
这个跟 .* 没有区别。
.* 以贪婪方式进行最大的匹配,而且在吃掉整个字符串后,开始部分的前面肯定不是 abc 了(前面是空)。
因此,(?
但是 (?<=abc).* 这样就有区别了,例如字符串是 abc123456 那这个表达式就能匹配 123456 了。
看看它是如何进行匹配的。
1,先对 (?<=abc) 进行处理,由于 (?<=abc) 匹配的是零宽度,因此从左边一个一个地走过去,直到
走到字母 c 的后面,OK,这时与 (?<=abc) 进行匹配了。
2,再对 .* 进行处理,从字母 c 的后面开始,由于 .* 能匹配几乎所有的字符。因此,表达式匹配完成,
匹配的结果就是 123456 了。
PS:那篇文章不错,不过有些语法在 Java 中不能使用,比如:内嵌注释、命名捕获、递归匹配等,
使用的时候注意一下。
哈哈,我上面贴的那个链接,是人家看《精通正则表达式》这本书的读书笔记。说到这,
要顺便提一下这本书,这本书可谓是正则表达式的登峰之作了,已经没有人再敢涉及了。
这本书中文版在这里有一章的试读下载:http://www.oreilly.com.cn/book.php?bn=978-7-121-04684-1
另外这个站点上有详细的正则表达式教程,可惜是英文的 http://www.regular-expressions.info
这个上面有好多现成的表达式 http://regexlib.com
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- shadowlin
- 等 级:
我似乎有那本书的英文版...看着比较累..我找找实体书看看.
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bhdgx
- (冰魂)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- chenhongxin
- (超级网工(J2EE小鸟版))
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bao110908
- ()火龙果()
- 等 级:
-
3
4
5
\s 只能匹配下面六种字符(详见 java.util.regex.Pattern 的 API DOC):
半角空格( )
水平制表符(\t)
竖直制表符
回车(\r)
换行(\n)
换页符(\f)
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- bao110908
- ()火龙果()
- 等 级:
-
3
4
5
[\s\p{Zs}]
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- chendabian
- (gare)
- 等 级:
大家帮忙看看 !!
[code=Java][/code]public static void main(String[] args) {
Pattern p = Pattern.compile("\\b[a-zA-Z]+?\\b");
String s = "aaa bbb jj2rjo jjj 2ii oo8d 7haohsie";
Matcher m = p.matcher(s);
while (m.find()) {
p(m.group());
}
}
找到了aaa bbb jjj 我想问的是开头的aaa 哪来的\\b[a-zA-Z]+?\\b 如果有结尾有也一样\\b[a-zA-Z]+?\\b
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- gulixiong88888888
- (佳佳)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- wargrey
- (战斗暴龙)
- 等 级:
你怎么看出来的
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- kaishiyouxi
- (刚出炉的包子)
- 等 级:
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
- IT_Peak
- (IT_Peak)
- 等 级:
关于正则表达式匹配空格的问题
常用的匹配正则表达式和实例
完善匹配中文的Php正则表达式
常用的匹配正则表达式和实例
正则表达式匹配IP
PHP中关于正则表达式匹配任意字符(包括换行符)的写法
关于正则表达式
正则表达式的终极能力 - 递归(在.NET的正则表达式实现中匹配嵌套结构的方法)
正则表达式--递归匹配、非贪婪匹配与分组替换
【正则表达式专题】正则表达式的应用
JS的正则表达式
常用的正则表达式
Java中使用正则表达式实现字符串匹配
Java中使用正则表达式实现字符串匹配_似虫非虫
Java中使用正则表达式实现字符串匹配
Java正则表达式的总结
java 正则表达式的使用
一些常用的正则表达式
Extjs 正则表达式的判断
常用的一些正则表达式
正则表达式
正则表达式
正则表达式
正则表达式