代码之家  ›  专栏  ›  技术社区  ›  Junior Mayhé

使用正则表达式提取字符串值的最小模式

  •  1
  • Junior Mayhé  · 技术社区  · 14 年前

    我试图用正确的模式实例化一个正则表达式,以便只获取字符串的正确值。我的文本文件有:

    Comment ID : 1234.5
    

    我想得到正确的值如下:

    1234.5
    

    什么是正确的Regex模式?

    这是我目前所拥有的

    new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); 
    

    但这也带来了不必要的字符串 “注释ID”

    可能不使用组标记 <comment_id> ?

    4 回复  |  直到 14 年前
        1
  •  0
  •   mbeckish    14 年前

    (?<=注释ID:\s*)[^\s]+

        2
  •  1
  •   Loki Kriasus    14 年前

    您不必使用组名,但必须通过索引引用它们。 如果字符串的左部分不能包含“:”,则正则表达式可以是:

    ^[^:]+:\s*(.*?)\s*$
    

    此外,还可以使用intance String.Split()方法:

    "abc : def".Split(new[] { ':' }, 2)
    
        3
  •  0
  •   thecoop    14 年前

    如果你不在乎剩下的 : 你可以使用:

    "^.*:\s*(?<comment_id>\w+)"
    

    你不需要使用 RegexOptions 对于这个,也一样,因为没有字符串可以忽略

        4
  •  0
  •   arena-ru    14 年前

    你提供的正则表达式 "^Comment ID\s*:\s*(?<comment_id>\w+)" 与点后的数字不匹配

    试着使用这个: (?!^Comment ID\s*:\s*)(?<comment_id>\d+\.*\d*)

    也可以将注释ID更改为任何单词或+