请尝试以下操作:
w+(.w+)+
在
+后
( ... )告诉它匹配的是括号一次或多次内部。
请注意,
w仅匹配ASCII字符,因此
café不会匹配到这样的单词
w+,更不用说包含Unipre的单词/文本了。
编辑
[...]和之间的区别
(...)是
[...]始终匹配单个字符。它称为“字符集”或“字符类”。所以,
[abc]没有 不
匹配字符串
"abc",但匹配的人物之一
a,
b或
c。
之所以
w+[.w+]*匹配您的字符串,是因为
[.w+]匹配
.或中的一个字符
w,然后在其之后重复零次或更多次
*。但是,
w+[.w+]*因此也会匹配字符串
aaaaa或
aaa...........。
的
(...)是,正如我已经提到的,简单地用于组字符(和可能的重复的那些基团)。
有关字符集的更多信息:http :
//www.regular-expressions.info/charclass.html
有关组的更多信息:http :
//www.regular-expressions.info/brackets.html
编辑二
这是Java中的示例(看到您发布的大多数都是Java答案):
import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main { public static void main(String[] args) { String text = "some.text.here only but not Some other " + "there some.name.separated.by.dots and.we are done!"; Pattern p = Pattern.compile("\w+(\.\w+)+"); Matcher m = p.matcher(text); while(m.find()) { System.out.println(m.group()); } }}会产生:
some.text.heresome.name.separated.by.dotsand.we
请注意,
m.group(0)和
m.group()是等效的:表示“整个匹配项”。



