如何用正则表达式精准提取目标字符串中的CGY?
搞定CGY的正则提取方案
嘿,我来帮你解决这个精准提取CGY的正则问题!先看你的目标字符串:
Pro-King Construction Ltd.:AF28118-CGY - Starbucks
之前的正则要么只拿到AF28118,要么误匹配到King,这里给你几个靠谱的方案:
方案1:精准锁定冒号后的连字符区域
用这个正则就能直接匹配到CGY:
(?<=:\w+-)\w+
为啥好用?
(?<=:\w+-)是正向预查,专门定位到冒号+一串字母数字+连字符的后面,完美避开开头Pro-King里的连字符,只盯着冒号后面的AF28118-之后的位置\w+匹配后面的字母数字序列,正好就是你要的CGY
方案2:通过捕获组提取目标内容
如果你的字符串里可能有非字母数字的字符,这个方案更灵活:
(?<=:)[^-\s]+-(\w+)
使用时取捕获组1的内容即可得到CGY。
原理说明:
(?<=:)定位到冒号之后的位置[^-\s]+匹配到第一个连字符之前的所有非空格、非连字符内容(也就是AF28118)-(\w+)匹配连字符,并把后面的目标内容CGY捕获到组1里
方案3:基于后续空格+连字符定位
如果你确定CGY后面一定跟着 - Starbucks这种格式,可以用这个更直观的正则:
(?<=-)\w+(?= -)
逻辑很简单:
(?<=-)确保前面是一个连字符(?= -)确保后面是空格+连字符,这样就不会误匹配Pro-King里的连字符(它后面没有空格+连字符)- 中间的
\w+就是要提取的CGY
这几个方案都能精准拿到你要的内容,不会出现之前的匹配错误~
内容的提问来源于stack exchange,提问作者user2062455
相关产品推荐
相关产品推荐

