抱歉,我不擅长正则表达式,但我正在尝试找到一个匹配任何以字符串“.wim”结尾的字符串,之后没有其他内容。例如,给定以下字符串:
Vista32Sp2_SL-56-GB3.wim
Vista64Sp2_SL-56-GB3.wim
Win864_SL-IN-869.wim.old0613
我希望我的正则表达式匹配前 2 个,但不是最后一个。字符串必须以 .wim 结尾,而不仅仅是包含它。我第一次尝试正则表达式是,^.*\.wim$但我把它放到了一个在线正则表达式测试器中,但它没有用。
如果不需要捕获匹配字符串的内容,只检查是否匹配,则^.*?不需要;所有你需要的是:
\.wim$
试试这个正则表达式:
^.*?\.wim$
.*?是非贪婪的,所以它不会匹配.wim
你可以试试这个:
(?<=\s|^)\S+\.wim(?=\s|$)
(如果您的目标是将其与 php、ruby 一起使用,则不适用于 javascript 或 VBscript)
对于 VBscript 使用它,结果在捕获组中:
(?:\s|^)(\S+\.wim)(?:\s|$)
或者
(?:\s|^)(\S+\.wim)(?=\s|$)
你试过的作品:
^.*\.wim$
我在 www.regextester.com 上试过这个,它有效。默认情况下,在该站点上,匹配的文本将替换为您在“替换为”中输入的内容,并且您只保留“Win864_SL-IN-869.wim.old0613”,这是可以的。
你可以试试正则表达式。我经常发现它更有用。
根据正则表达式引擎,“.*”可以贪婪地匹配(包括“.wim”),所以当它尝试匹配“.wim”时它已经过去了。在这种情况下,杰瑞的回答更合适(我相信使用 PCRE 兼容的表达式)