我正在使用Java并且无法匹配重复序列。我想匹配类似的东西:
a.b.c.d.e.f.g.
并且能够在分隔符之间提取文本(例如,返回abcdefg),其中分隔符可以是多个非单词字符,文本可以是多个单词字符。到目前为止,这是我的正则表达式:
([\\w]+([\\W]+)(?:[\\w]+\2)*)
(不起作用)
我本来打算用这个正则表达式获取第2组中的分隔符,然后在第1组上使用replaceAll来交换空字符串的分隔符,只给我文本。我得到了分隔符,但无法获取所有文本。
感谢您的帮助!
答案 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?