正则表达式匹配字符串末尾的模式之前的所有内容

时间:2018-04-11 15:55:17

标签: regex powershell

我正在尝试构建一个正则表达式,其中包含之前字符串末尾的某个模式。

这是我的首发模式:

/\.\w{2,3}(\.\w{2,3})?$/g

如果我给它一个字符串,例如db.google.comgoogle.co.uktest.db.google.co.uk,则会选择.co.uk.com之类的结尾。

我想要反转它,以便它只选择事先发生的事情。所以它应匹配这些字符串:

  • db.google.comdb.google
  • google.co.ukgoogle
  • test.db.google.co.uktest.db.google

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

叫我密集,但我想你已经在考虑了。如果要选择与当前正则表达式相反的原因,为什么不在替换中使用它呢?像这样:

$re = '\.\w{2,3}(\.\w{2,3})?$'
'db.google.com' -replace $re #=> db.google
'google.co.uk' -replace $re #=> google
'test.db.google.co.uk' -replace $re #=> test.db.google