求C#中一句正则表达式

6lilu9 2018-11-11 12:50:59
原字符串 v1.0.0.0.exe ,想把中间的v1.0.0.0提取出来,请高手给个正则表达式

试验过以下式子,都是空值,奇了怪了

static void Main(string[] args)
{
string lasterExeFileName = "试验程序 v1.0.0.0.exe";

string pattern = @"(?<=v)[\s\S]*? (?=\.exe)";
string LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v).*? (?=\.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v)[\s\S]*? (?=.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v)[\s\S]*? (?=.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

Console.ReadLine();


}


...全文
42 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
6lilu9 2018-11-14
  • 打赏
  • 举报
回复
谢谢各位大神,我都给自已跪了..
xuzuning 2018-11-13
  • 打赏
  • 举报
回复
            string lasterExeFileName = "试验程序 v1.0.0.0.exe";

string pattern = @"(?<=v)[\s\S]*?(?=\.exe)";
string LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v).*?(?=\.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v)[\s\S]*?(?=.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);

pattern = @"(?<=v)[\s\S]*?(?=.exe)";
LasterVerision = Regex.Match(lasterExeFileName, pattern).ToString();
Console.WriteLine("当表达式为{0}时,结果为:{1}", pattern, LasterVerision);
没有毛病
你自己多谢了个空格,又能怪谁呢?
  • 打赏
  • 举报
回复
引用 5 楼 lengyeshuang 的回复:
[quote=引用 4 楼 hez2010 的回复:] (v\d+\.\d+\.\d+\.\d+)
可行,非常感谢。我还想贪心一点,想问一下,这个 (?<=v).*? (?=\.exe) 为什么不行呢? [/quote] .*?是非贪婪,你将后面的?去掉就可以匹配1.0.0.0
(?<=v).*(?=\.exe)
千杯不醉-sen 2018-11-13
  • 打赏
  • 举报
回复

string pattern = @"^[V|v]\d+.\d+.\d+.\d+”
dalmeeme 2018-11-12
  • 打赏
  • 举报
回复
你的(?=\.exe)前有个空格,而文本中却没有,当然匹配不到了。
6lilu9 2018-11-11
  • 打赏
  • 举报
回复
引用 4 楼 hez2010 的回复:
(v\d+\.\d+\.\d+\.\d+)
可行,非常感谢。我还想贪心一点,想问一下,这个 (?<=v).*? (?=\.exe) 为什么不行呢?
hez2010 2018-11-11
  • 打赏
  • 举报
回复
(v\d+\.\d+\.\d+\.\d+)
Nick大帅仔 2018-11-11
  • 打赏
  • 举报
回复
如果你只是想截取原字符串 “v1.0.0.0.exe” 中间的“v1.0.0.0”。
那么可以使用,表示从字符串倒数第12个字符开始往后截取8位。
lasterExeFileName.SubString(lasterExeFileName.Lenth-12,8)


极客诗人 2018-11-11
  • 打赏
  • 举报
回复
.Split(' ')[1]
6lilu9 2018-11-11
  • 打赏
  • 举报
回复
这个论坛人气不旺了吗?怎么没人打理我了呢

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧