负向前瞻模式无论在字符串中的哪个位置都匹配

时间:2013-05-31 09:27:06

标签: java regex

这与Ignoring case for a whole pattern of strings相关联,但这是一个不同的问题。

我想知道是否有人忽略了一个字符串的开头,或者一个负面的前瞻只能从左边做得太对,需要一个起点?我尝试的每一件事似乎总能找到匹配。

我目前使用的模式是

(?i)^(?!pack ?station|paket ?station).*$

这适用于“packstation foo bar”,但如果我想匹配“foo packstation bar”,那么它就不起作用。

字符串最多只能包含26个字符,如果它包含下面的字符串,那么我想匹配它。

  • packstation - (packstation | Packstation | PACKSTATION)
  • 包站 - (包站|包站|包站|包站|包站)
  • paketstation - (paketstation | Paketstation | PAKETSTATION)
  • paket站 - (paket站| Paket站| paket站| Paket站| PAKET站)

1 个答案:

答案 0 :(得分:3)

这就是你要找的东西

(?i)^(?=.*(pack ?station|paket ?station)).{1,26}$

你在前瞻中缺少.*

此外,如果你想匹配它,使用正向前瞻会更清晰..