用Java解释这个正则表达式

时间:2014-09-23 14:36:31

标签: java regex

java中的正则表达式:

'String'.replaceAll("([aeioucgjkqsxyzbfpvwdtmn1234567890])\\1+", "$1")

有人可以解释不同角色的作用吗?

3 个答案:

答案 0 :(得分:2)

<强>解释

  • [aeioucgjkqsxyzbfpvwdtmn1234567890]匹配列表中的单个字符。
  • ([aeioucgjkqsxyzbfpvwdtmn1234567890])在char类周围捕获组将捕获该单个字符。
  • \1+ \1是一个指向组索引1中的字符的指针。在我们的例子中,捕获一个字符,因此它引用该单个字符。 \1+表示组索引1中出现一个或多个字符。

例如:

aaaa

上述正则表达式将捕获第一个字符并检查以下一个或多个字符是否与捕获的第一个字符相同。如果是,则将整个重复的字符替换为单个字符(在组索引1中),即aaaa替换为单个a

DEMO

答案 1 :(得分:-3)

括号内列出的所有字母都将替换为$ 1,如果它们后面是\ 1,则为字面反斜杠。加号(+)表示1或更多。

答案 2 :(得分:-3)

括号[...]内的1个或多个字符的任何序列都将替换为$ 1.

例如,这将删除字符串中的所有字符: System.out.println(Str.replaceAll(&#34;([aeioucgjkqsxyzbfpvwdtmn1234567890])\ 1 +&#34;,&#34;&#34;));