1

问题:

给定以下文本文件:

blablabla
# Block 1
# Some text
## Some more text
### Even more text
### Hello
# Some text
### Again Text
# Blank lines or lines not starting with # terminate

blablabala
# Block 1
# Some text
## Some more text
### Even more text
### Hello
# Some text
### Again Text
# Blank lines or lines not starting with # terminate
blablabla

是否可以使用正则表达式提取所有以 # 开头的行的块?
注意:
该块应该是一个字符串,只需提取所有以 # 开头的行是微不足道的。

附加问题:
是否可以获得正则表达式中前导 # 的数量?

4

2 回答 2

2

使用

var regex = new Regex(@"(#.*([\n]|$))+");
var matches = regex.Matches(sample_string);

设置sample_string为您的示例返回两个匹配项,matches[0]第一个块和matches[1]第二个。

于 2013-05-05T10:59:31.487 回答
0
  Regex RE = new Regex(@"\n+#.*", RegexOptions.Multiline);
  MatchCollection theMatches = RE.Matches(text);
  theMatches.Count; //gives number of matches

我使用regex.com来测试我的正则表达式是否工作正常。

 string str = @"blablabla
                # Block 1
                # Some text
                ## Some more text
                ### Even more text
                ### Hello
                # Some text
                ### Again Text
                # Blank lines or lines not starting with # terminate";
        Regex RE = new Regex(@"\n+#.*", RegexOptions.Multiline);
        MatchCollection theMatches = RE.Matches(str);
        theMatches.Count.ToString();
         foreach (Match match in theMatches)
         {
                 Console.WriteLine(match.ToString());
         }

输出是

'# 块 1

'# 一些文字

'## 还有一些文字

'### 更多文字

'### 你好

'# 一些文字

'### 再次文本

'# 空行或不以 # 开头的行终止

于 2013-05-05T11:13:09.333 回答