如何编写正则表达式匹配两个数字串之间的纯字母字符组?
原有正则问题
你当前使用的[0-9]{4}\s*\S+\s+(\S+)中,分组内的\S+会匹配所有非空白字符(包含数字),因此会把FPS后的数字也一并捕获,导致结果不符合预期。
调整方案
你可以将分组内的匹配规则改为仅匹配字母,即可拿到预期结果,调整后的正则如下:
[0-9]{4}\s*\S+\s+([A-Za-z]+)
规则说明
- 将原分组中的
\S+替换为[A-Za-z]+,该规则只会匹配连续的大小写字母,遇到数字就会自动终止匹配,刚好捕获到FPS - 如果仅需要匹配大写字母,可以把规则简化为
[A-Z]+
如果你的场景是固定从字符串末尾的混合段提取开头纯字母,也可以用更精简的正则:
\s([A-Za-z]+)\d*$
该规则直接定位到字符串结尾前的空白字符,捕获空白后连续的字母段,忽略后续的数字。
以上两种正则在你给出的示例字符串上测试,分组1的捕获结果均为FPS,符合需求。
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

