我有一个看起来像这样的字符串:
2 [1:22:33]下载文件: sometextand41245原始文件: 1234_MyFile.ext空格......
和一个正则表达式,几乎可以在原始文件之后获取组:空格和空格......
。+原始名称:\ s *(。+)\ s *
这将给我2组,一组有一切,另一组给我我想要的组加上更多:
1234_MyFile.ext空间空间......
我正在使用空格这个词代表这个角色...我很抱歉,因为它已经很晚了。这是我想要的结果:
1234_MyFile.ext
谢谢
答案 0 :(得分:0)
答案 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+)
对于我的正则表达式,我假设文件名可以是除空格字符之外的所有内容。