使用正则表达式在字符串中提取_之前的文本

时间:2013-08-13 15:16:31

标签: regex

我有一些大量的字符串,它们以DD_filename开头。

如何使用正则表达式在_之前提取字符。

我尝试使用from here进行学习,并且{@ 1}}将从a.b开始并以a

结尾检索字符

我尝试过类似b,但它对我不起作用。

5 个答案:

答案 0 :(得分:4)

从字符串的开头开始,捕获所有非下划线字符:

"^[^_]*"

第一个^(插入符号)字符表示匹配从字符串的开头开始。括号允许您定义一组可能的字符(字符类)。第二个^字符表示“不”。所以角色类是“不是下划线”。这颗恒星意味着“零或更多”。所以用简单的英语:“从字符串的开头匹配零个或多个非下划线字符”。

答案 1 :(得分:3)

您可以尝试类似

的内容
.*?(?=_)

.匹配任何字符,*?reluctant quantifier(?=_)positive lookahead,以确保我们的匹配后跟_

如果您只想提取字符串的开头中出现的字符,可以添加^锚:^.*?(?=_)^匹配字符串中第一个字符前的位置。

答案 2 :(得分:3)

^._只会匹配_之前的一个字符。试试这个模式:

^.*?(?=_)

答案 3 :(得分:2)

只捕获不是下划线的所有字符:

"[^_]*"

答案 4 :(得分:2)

Regular Expression to get all characters before "-"

查看@ stema的答案。他提供了四种方法来做到这一点,但第一种可能是最好的。

Match result = Regex.Match(text, @"^.*?(?=-)");

Console.WriteLine(result);