如何提取字符串中filename/后出现的所有8位目标字符串?
嘿,这个需求用正则表达式就能轻松搞定!核心思路是匹配所有filename/后面紧跟的8位字符串,下面是几种常见编程语言的实现方案:
JavaScript 实现
你可以用正则的全局匹配结合exec方法来遍历所有符合条件的内容:
const str = "Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second"; // 正则匹配filename/后接的8位字母数字,全局标志g确保找全所有匹配 const regex = /filename\/([A-Za-z0-9]{8})/g; const strArr = []; let matchResult; // 循环执行exec,直到找不到匹配项 while ((matchResult = regex.exec(str)) !== null) { // 捕获组1就是我们要的8位字符串 strArr.push(matchResult[1]); } console.log(strArr); // 输出:["12345678", "1212abcd"]
Python 实现
Python的re.findall方法更简洁,它会直接返回所有捕获到的内容组成的列表:
import re str_content = "Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second" # 用原始字符串避免转义问题,捕获filename/后的8位字母数字 pattern = r"filename\/([A-Za-z0-9]{8})" str_arr = re.findall(pattern, str_content) print(str_arr) # 输出:['12345678', '1212abcd']
补充说明
如果你的8位字符串可能包含字母数字以外的字符(比如下划线),可以把正则里的[A-Za-z0-9]换成\w(匹配字母、数字、下划线);如果需要匹配任意字符(除换行外),可以换成.,但要注意这种写法可能会匹配到意外的内容,建议根据实际需求调整正则的匹配范围。
内容的提问来源于stack exchange,提问作者Kobi
相关产品推荐
相关产品推荐

