0

抱歉,我不擅长正则表达式,但我正在尝试找到一个匹配任何以字符串“.wim”结尾的字符串,之后没有其他内容。例如,给定以下字符串:

Vista32Sp2_SL-56-GB3.wim
Vista64Sp2_SL-56-GB3.wim
Win864_SL-IN-869.wim.old0613

我希望我的正则表达式匹配前 2 个,但不是最后一个。字符串必须以 .wim 结尾,而不仅仅是包含它。我第一次尝试正则表达式是,^.*\.wim$但我把它放到了一个在线正则表达式测试器中,但它没有用。

4

4 回答 4

4

如果不需要捕获匹配字符串的内容,只检查是否匹配,则^.*?不需要;所有你需要的是:

\.wim$
于 2013-06-12T17:48:46.723 回答
0

试试这个正则表达式:

^.*?\.wim$

.*?是非贪婪的,所以它不会匹配.wim

于 2013-06-12T17:43:40.077 回答
0

你可以试试这个:

(?<=\s|^)\S+\.wim(?=\s|$)

(如果您的目标是将其与 php、ruby 一起使用,则不适用于 javascript 或 VBscript)

对于 VBscript 使用它,结果在捕获组中:

(?:\s|^)(\S+\.wim)(?:\s|$)

或者

(?:\s|^)(\S+\.wim)(?=\s|$)
于 2013-06-12T17:55:32.233 回答
-1

你试过的作品:

^.*\.wim$

我在 www.regextester.com 上试过这个,它有效。默认情况下,在该站点上,匹配的文本将替换为您在“替换为”中输入的内容,并且您只保留“Win864_SL-IN-869.wim.old0613”,这是可以的。

你可以试试正则表达式。我经常发现它更有用。

根据正则表达式引擎,“.*”可以贪婪地匹配(包括“.wim”),所以当它尝试匹配“.wim”时它已经过去了。在这种情况下,杰瑞的回答更合适(我相信使用 PCRE 兼容的表达式)

于 2013-06-12T17:41:17.777 回答