Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 匹配具有相似结尾文本的字符串_.net_Regex - Fatal编程技术网

.net 匹配具有相似结尾文本的字符串

.net 匹配具有相似结尾文本的字符串,.net,regex,.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 有没有一种方法可以将OR与正则表达式一起使用来过滤所有备选方案 谢谢您可以将以下正则表达式与可选组一起使用: (?[^\

我有一些字符串,比如:

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
有没有一种方法可以将OR与正则表达式一起使用来过滤所有备选方案


谢谢

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

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

详细信息

  • (?[^\s.]*)
    -一个“名称”命名组,捕获0+个字符,而不是空格和点
  • (?:\.bob)?
    -可选的
    .bob
    字符序列(请注意,应转义文字点)
  • (?:\.fred)?
    -可选的
    .fred
    字符序列
  • \.blogs\.com
    -a
    .blogs.com
    字符序列

Dwayne,如果需要调整,请随时发表评论。那么我会添加更多的解释。好的,我添加了对模式的解释。请注意,有一个很好的工具可以调试.NETregexps,它可以免费使用。
a-bob-01

c-bob-03
d-bob-04.bob
(?<name>[^\s.]*)(?:\.bob)?(?:\.fred)?\.blogs\.com
                ^^      ^^^^^      ^^