如何使用正则表达式匹配提取字符串中STRY前缀的指定片段?
从点分隔字符串中提取STRY格式片段的正则实现
核心匹配规则
针对样例字符串SampleReleaseFY20Q3.STRY0122544.Developer.SDLCRework.6,目标片段STRY0122544的特征是固定前缀STRY后跟7位数字,直接使用正则表达式STRY\d{7}即可完成匹配。
如果需要避免跨片段误匹配(比如字符串中出现更长的STRY开头字符段),可以加上单词边界优化为\bSTRY\d{7}\b,完美适配点号分隔的字符串场景。
不同开发语言的落地代码
提取结果直接赋值给对应变量即可,以下是常用场景的实现示例:
- JavaScript
const sourceStr = "SampleReleaseFY20Q3.STRY0122544.Developer.SDLCRework.6"; const matchResult = sourceStr.match(/\bSTRY\d{7}\b/); // 存储提取结果,无匹配时赋值为空字符串 const targetValue = matchResult?.[0] ?? "";
- Python
import re source_str = "SampleReleaseFY20Q3.STRY0122544.Developer.SDLCRework.6" match_result = re.search(r"\bSTRY\d{7}\b", source_str) // 存储提取结果,无匹配时赋值为空字符串 target_value = match_result.group() if match_result else ""
- Shell
source_str="SampleReleaseFY20Q3.STRY0122544.Developer.SDLCRework.6" # 存储提取结果到变量 target_value=$(echo "$source_str" | grep -oE "STRY[0-9]{7}")
- Java
import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractDemo { public static void main(String[] args) { String sourceStr = "SampleReleaseFY20Q3.STRY0122544.Developer.SDLCRework.6"; Pattern pattern = Pattern.compile("\\bSTRY\\d{7}\\b"); Matcher matcher = pattern.matcher(sourceStr); String targetValue = ""; if (matcher.find()) { targetValue = matcher.group(); } } }
规则适配说明
如果实际场景中STRY后缀的数字长度不是固定7位,只需要修改正则中的数字长度规则即可:
- 匹配STRY后跟任意长度数字:把
\d{7}替换为\d+ - 匹配STRY后跟6-8位数字:把
\d{7}替换为\d{6,8}
内容的提问来源于stack exchange,提问作者Raskill
相关产品推荐
相关产品推荐

