正则表达式后一组停止

时间:2011-01-21 07:49:37

标签: c# regex string

我有一个看起来像这样的字符串:

  

2 [1:22:33]下载文件:   sometextand41245原始文件:   1234_MyFile.ext空格......

和一个正则表达式,几乎可以在原始文件之后获取组:空格和空格......

  

。+原始名称:\ s *(。+)\ s *

这将给我2组,一组有一切,另一组给我我想要的组加上更多:

  

1234_MyFile.ext空间空间......

我正在使用空格这个词代表这个角色...我很抱歉,因为它已经很晚了。这是我想要的结果:

  

1234_MyFile.ext

谢谢

4 个答案:

答案 0 :(得分:0)

试试这个:

.+Original\sFile:\s(.*)\s*

经过测试并在http://www.regextester.com/

工作

答案 1 :(得分:0)

你可以更具体:

Original Name:\s*(\S+)

\S+匹配一个或多个非空格字符。

或者你可以使你的量词变得懒惰,但是你需要在文件名之后强制执行至少一个空格或字符串的结尾:

Original Name:\s*(.+?)(?:\s+|$)

答案 2 :(得分:0)

您可以使用\ S匹配任何非空格字符:

.+Original Name:\s*(\S+)\s*

然而,如果原始名称最后可以包含空格,那么这并不会真正做到你想要的,所以可能有更好的选择。在你的例子中,原始名称后面有空格,那些空格后面有什么东西吗?或者字符串在空格后结束?如果它在空格后结束,您可以执行以下操作:

Original Name:\s*(.+?)\s*$

如果它没有在空格后面结束,请将$替换为它们之后的内容。

答案 3 :(得分:0)

在正则表达式世界中,可以有很多的工作模式变体(这就是我喜欢的!)但我的建议是尽可能具体。如果我知道源文本足够好,我会尽量避免发明可以覆盖任何可能情况的疯狂正则表达式;)我的5美分(带有正向观察):

(?<=Original Name:\s*)(\S+)

对于我的正则表达式,我假设文件名可以是除空格字符之外的所有内容。