这个正则表达式是如何做到的?

时间:2011-10-29 19:25:02

标签: java regex

我想在我的程序中使用下面的表达式,但我不知道这个正则表达式是什么! 请帮帮我。

"(?=(?!^)[,;.:])|(?<=[,;.:])"

在上面的表达式中(?=(?!^)[,;。:])找到以[。;,:]或以?结尾的任何字符集?这个表达式中有什么(?!^)? 并且此表达式查找以[,;。:]或否结尾的任何字符集? 请帮我。

1 个答案:

答案 0 :(得分:3)

表达式匹配满足以下两个条件之一的0长度字符串:

  • 它前面是,;.:之一,但不是在主题字符串开头(位置0)之前的0长度字符串。因此主题字符串"."在位置0处没有匹配,仅在位置1处,因为以下替代方案。这是通过积极前瞻(?=)和负前瞻(?!)完成的。
  • 在它后面是,;.:之一。这是通过积极的观察(?&lt; =)来完成的。

例如对于"aaa,1",您有两个匹配:在第三个位置(在最后一个a之后,因为它后跟,)和第四个位置(因为它之前是,)。