我有一些字符串:
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来过滤所有替代品?
由于
答案 0 :(得分:1)
您可以将以下正则表达式与可选组一起使用:
(?<name>[^\s.]*)(?:\.bob)?(?:\.fred)?\.blogs\.com
^^ ^^^^^ ^^
请参阅regex demo
<强>详情:
(?<name>[^\s.]*)
- 一个名为“名称”的组,捕获除空格和点之外的0 +字符(?:\.bob)?
- 一个可选的.bob
字符序列(请注意,应该转义字面点)(?:\.fred)?
- 可选的.fred
字符序列\.blogs\.com
- 一个.blogs.com
字符序列。