用JavaScript正则按university等关键词分组作者CSV元数据问题咨询
解决方案
最终正则表达式
/(.+?)\., ((?:(?!university|college|institute)[^,]+,)*?)\s*([^,]*(?:university|college|institute)[^,]*)\s*,?\s*(.*?)\s*(?=;|$)/gi
使用时需开启g(全局匹配)和i(忽略大小写)标志。
分组说明
- 分组1:对应作者名,严格按照
.,分隔规则提取,自动处理前后空格 - 分组2:对应第一个匹配指定关键词的机构前的所有内容,保留原有逗号格式
- 分组3:对应第一个包含
university/college/institute的机构名称 - 分组4:对应机构之后到分号前的所有剩余内容,不会匹配到下一个作者的信息
JS使用示例
const inputStr = `Lopes de Carvalho, L., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland; Bligt-Lind√©n, E., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland; Ramaiah, A., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland, Sri Paramakalyani Centre for Environmental Sciences, Manonmaniam Sundaranar University, Alwarkurichi, Tamil Nadu 627412, India; Johnson, M.S., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland; Salminen, T.A., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland;` const authorReg = /(.+?)\., ((?:(?!university|college|institute)[^,]+,)*?)\s*([^,]*(?:university|college|institute)[^,]*)\s*,?\s*(.*?)\s*(?=;|$)/gi const matchResult = [] let item while((item = authorReg.exec(inputStr)) !== null) { matchResult.push({ 作者名: item[1].trim(), 机构前内容: item[2].trim(), 匹配机构: item[3].trim(), 机构后内容: item[4].trim() }) } // 输出结果可直接对应你要求的分组规则 console.log(matchResult)
内容的提问来源于stack exchange,提问作者Sivaraj S
相关产品推荐
相关产品推荐

