匹配字符串与类似的结束文本

时间:2016-10-03 10:37:38

标签: .net regex

我有一些字符串:

a-bob-01.fred.blogs.com
b-bob-02.blogs.com
c-bob-03.fred.blogs.com
d-bob-04.bob.fred.blogs.com

我想捕获名字,所以我尝试:

(?<name>.*).fred.blogs.com|.blogs.com|.bob.fred.blogs.com

但仅捕获:

a-bob-01

c-bob-03
d-bob-04.bob

有没有办法使用正则表达式的OR来过滤所有替代品?

由于

1 个答案:

答案 0 :(得分:1)

您可以将以下正则表达式与可选组一起使用:

(?<name>[^\s.]*)(?:\.bob)?(?:\.fred)?\.blogs\.com
                ^^      ^^^^^      ^^

请参阅regex demo

<强>详情:

  • (?<name>[^\s.]*) - 一个名为“名称”的组,捕获除空格和点之外的0 +字符
  • (?:\.bob)? - 一个可选的.bob字符序列(请注意,应该转义字面点)
  • (?:\.fred)? - 可选的.fred字符序列
  • \.blogs\.com - 一个.blogs.com字符序列。

enter image description here