1

我有一些以 . 开头的字符串DD_filename

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

我尝试从这里学习使用,因为它给出的a.b将检索从开始a和结束的字符b

我也尝试过类似^._的方法,但它对我不起作用。

4

5 回答 5

5

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

^.*?(?=_)
于 2013-08-13T15:18:29.330 回答
5

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

"^[^_]*"

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

于 2013-08-13T15:20:15.550 回答
3

你可以尝试类似的东西

.*?(?=_)

.匹配任何字符并且*?是一个不情愿的量词(?=_)是一个积极的前瞻,以确保我们的匹配后跟一个_.

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

于 2013-08-13T15:18:06.130 回答
2

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

"[^_]*"
于 2013-08-13T15:18:31.913 回答
2

正则表达式获取“-”之前的所有字符

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

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

Console.WriteLine(result);
于 2013-08-13T15:21:52.487 回答