用于匹配交替序列的正则表达式

时间:2010-01-12 07:58:25

标签: java regex

我正在使用Java并且无法匹配重复序列。我想匹配类似的东西:

a.b.c.d.e.f.g.

并且能够在分隔符之间提取文本(例如,返回abcdefg),其中分隔符可以是多个非单词字符,文本可以是多个单词字符。到目前为止,这是我的正则表达式:

([\\w]+([\\W]+)(?:[\\w]+\2)*)

(不起作用)

我本来打算用这个正则表达式获取第2组中的分隔符,然后在第1组上使用replaceAll来交换空字符串的分隔符,只给我文本。我得到了分隔符,但无法获取所有文本。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

(\w+)\W+替换为$1

答案 1 :(得分:0)

为什么不使用String.split

答案 2 :(得分:0)

(\w+)(\W+|$)替换为$1。确保已打开全局标记。

它替换了一系列单词字符,后跟一系列非单词字符或一行字序列。

String line = "Am.$#%^ar.$#%^gho.$#%^sh";
line = line.replaceAll("(\\w+)(\\W+|$)", "$1");
System.out.println(line);//prints my name

答案 3 :(得分:0)

为什么不..

  • 查找(\w+)的所有匹配项,然后将它们连接起来;或
  • 找到所有非单词字符(\W+),然后使用空字符串Matcher.html#replaceAll