正则表达式问题:提取MyText.后非;或空格结尾的内容
修正正则表达式以匹配预期内容
我来帮你搞定这个正则问题!你之前用的MyText.(.*(?=\;))之所以会匹配到MyText.abc + "ss",核心问题在于.*是贪婪匹配——它会尽可能多地抓取字符,直到遇到分号为止,所以把abc后面的 + "ss"也一并包含进去了,完全偏离了你的需求。
修正后的正则表达式
你需要精准匹配MyText.之后、分号或空格之前的内容,用这个正则就可以达到预期:
MyText\.([^;\s]+)
正则规则拆解
MyText\.:匹配字面量MyText.,这里的.必须转义成\.,因为正则里的.默认是匹配任意单个字符的通配符,不转义会出错。([^;\s]+):这是关键的捕获组:[^;\s]是否定字符集,表示匹配任何不是分号(;)或空白字符(空格、制表符等)的字符;+表示匹配一个或多个这样的字符,确保我们只抓取到xyz、abc这类符合要求的内容,不会包含后面的空格或多余字符。
测试验证
把你的输入文本MyText.xyz; MyText.abc + "ss";用这个正则匹配,会得到两个捕获结果:xyz和abc,组合起来就是你想要的MyText.xyz MyText.abc。
内容的提问来源于stack exchange,提问作者Raghav
相关产品推荐
相关产品推荐

