正则表达式匹配C#

时间:2017-09-14 08:19:28

标签: .net regex

我需要匹配以下正则表达式

lines...
# TYPE word expression
lines...

其中表达式只能是以下摘要之一,计数器,计量器,直方图或无类型

例如:

# HELP http_requests A summary of all the requests being made
# TYPE http_requests summary
http_request{requestMethod="GET",requestPath="/status/detailed",requestStatusCode="503"} 824
http_request{requestMethod="GET",requestPath="/status/detailed",requestStatusCode="503"} 334

我尝试了以下但似乎无法正常工作

?^{# TYPE}\s\w\s(summary|counter|gauge|histogram|untyped)$?

知道我缺少什么吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

(?m)^# TYPE +\w+ +(summary|counter|gauge|histogram|untyped)\r?$

这就是您需要匹配多行字符串中的行。

详细

  • (?m) - 多线修改器
  • ^ - 开始行
  • # TYPE + - # TYPE子字符串和一个或多个空格
  • \w+ + - 1个单词字符,然后是1 +空格
  • (summary|counter|gauge|histogram|untyped) - 交替组中的一个子字符串
  • \r? - 一个可选的CR符号(必需$在.NET正则表达式中此符号之前不匹配)
  • $ - 行尾。

答案 1 :(得分:0)

使用以下方法成功测试:#TYPE(。*)\ b(摘要|计数器|计量器|直方图|无类型)\ b \ r?\ n?

如果你匹配整个例子(多行文本),这是有效的,但如果你遍历每一行并匹配正则表达式使用:

^#TYPE(。*)\ b(摘要|计数器|规范|直方图|无类型)\ b \ r?\ n?$