Java正则表达式中的单词边界什么意思,这样理解对吗?

String str="da jia zhu yi la,ming tian bu fang jia!";//找出其中的3字母单词
Pattern p = Pattern.compile("\\b[a-z]{3}\\b");
Matcher matcher = p.matcher(str);
while(matcher.find()){
System.out.println(matcher.group());
}

我的理解:扫描串str,一旦发现两个这样的(非字母也非数字)字符中间夹着三个字母或者数字,就为一个匹配?是这样的吗?

显然楼主理解是错的:
这个正则的意思是: 匹配 单词长度为3 且小写的单词

比如 这个正则匹配 what a good boy and guy, BOY!
能匹配到 boy , and 和 guy ,其它的都匹配不到
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-22
单词边界又叫锚定,在为了不批到其它东西设定的,给个例子给你,可以有助于理解:
你只搜索123
那么 1234,0123,01234,123
在不加边界的情况下,这4个数字中123都会匹配到,如果添加了边界那么就会只搜索123,可以理解为精确搜索123本回答被网友采纳

java正则表达式"\\b"和“\\\\b”区别?
\\b 是语法 匹配一个单词边界,也就是指单词和空格间的位置 \\\\b 是转译 匹配 “\\b"

请问“单词边界”是什么意思? - 技术问答
就是词语的边缘。比如 my name is fising.这句话中,name中,n这个字母的左侧的这个【位置】,就是单词开始;e这个字母的右侧这个【位置】,就是单词的结束。学习这部分知识,可以参考^与$理解。

java的正则表达式,"\\b(\\w+)\\b\\s+\\1\\b"这个怎么理解
(\\w+)匹配一个词,\\1匹配第一个匹配组,在这里就是前面匹配的那个词.所以:(\\w+)\\1 匹配两个完全相同的词.(词里可以有至少一个字母或数字)\\s+ 两个词当中隔了至少一个能被\\s匹配的符号(比如空格,tab)

java的正则表达式,"\\b(\\w+)\\b\\s+\\1\\b"这个怎么理解
(\\w+)匹配一个词, \\1匹配第一个匹配组, 在这里就是前面匹配的那个词.所以:(\\w+) \\1 匹配两个完全相同的词. (词里可以有至少一个字母或数字)\\s+ 两个词当中隔了至少一个能被\\s匹配的符号(比如空格, tab)

正则表达式中,为什么\/\\bn\\w\/匹配noonday中的no,而不是只有n
\\b ——单词边界(这里是单词的开始)n——单词n \\w—— 一个不属于空也不是标点的字符 所以匹配n和n后面的一个字符。把\\w去掉就只匹配一个n了。

RegExp(" iehover\\\\b") 这代码是什么意思 \/\/B???
不晓得为什么是\\\\b,如果是写在java里面的话,可以理解。\\\\b就是\\b,表示单词的开始或结尾,也就是单词的分界处。说白了,是空格。这个正则表达式举个例子:a iehover hello 匹配后就是:iehover

在正则表达式中,\\b.*\\b与^.*$有什么不同,请回答.越详细的我追分.
\\b是单词的边界,而^ $是字符串的首尾,一般一行是一个字符串的话,就是行首 行尾

JAVA正则表达式意思 str.matches(".*\\\\b" + key + "\\\\b.*")
匹配任意字符重复任意次,然后是\\b表示单词边界,加上key变量里放的内容,再单词边界,最后任意字符任意次。也就是只要某段内含一个单独的 key 里标示的内容就把这段匹配出来。

Python正则表达式里的\\B和\\b的区别!我看文档了.可是还是不明白! 求高 ...
\\b匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。\\B匹配非单词边界。“er\\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。维基说的很清楚奥,还有不明白的可以继续问我...

如何用正则表达式表示三个字母单词?
代表匹配的是匹配长度为3的单词,\\b匹配一个单词边界,也就是指单词和空格间的位置。也可能是其他的,如标点符号等。\\B[a-zA-Z]{3}\\B 代表匹配\\B非单词边界,单词where中的her,\\B是匹配非单词边界的意思。your单词就不匹配。^[a-zA-Z]{3} 代表只能是三个字母,多余三个字母就不匹配。

相似回答