首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex javascript的基于字符串集的逗号分隔值分组

使用regex javascript的基于字符串集的逗号分隔值分组
EN

Stack Overflow用户
提问于 2021-08-22 01:18:25
回答 1查看 120关注 0票数 0

我有个问题希望有人能帮上忙。

这是输入字符串

代码语言:javascript
复制
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;  

这种模式就像

代码语言:javascript
复制
<author name>., <author meta>; <pattern repeats> 

<author meta> => from this, need group the values by any one of the comma separated value matches first, which contains the string university|college|institute 

让我们取下给定字符串的第一部分。

代码语言:javascript
复制
Lopes de Carvalho, L., Structural Bioinformatics Laboratory, Biochemistry, Faculty of Science and Engineering, √Öbo Akademi University, Turku, Finland;

需要像这样的分组

比赛1:

第1组:洛佩斯·德卡瓦略,L based on ., separator

第2组:科学和工程学院生物化学结构生物信息学实验室

第3组. first match which contains the given set of strings (i.e) university阿卡德米大学√

第4组:图尔库,芬兰

比赛2:

第1组: Ramaiah,A.

第2组:科学和工程学院生物化学结构生物信息学实验室

第3组. first match which contains the given set of strings (i.e) university阿卡德米大学√

4组:芬兰图尔库,斯里兰卡环境科学中心,Manonmaniam Sundaranar大学,Alwarkurichi,Tamil Nadu,627412,印度

从这个组2,3,4我无法知道如何构造正则表达式。

这是我的尝试

代码语言:javascript
复制
(.*?)\., ([^,]*)(.*?);

https://regex101.com/r/I7xjlx/1

我尝试过许多方法来完成这个任务,但是无法找到构建正则表达式的最佳方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 03:14:51

正则表达式匹配不区分大小写的单词“”,并出现在匹配组的end中,后面跟着一个逗号。例如:, √Öbo Akademi University, ...,而不是, University of √Öbo Akademi, ...

此外,在第三组之后,如果集合中的一个单词再次出现,它将不会捕获。如:

代码语言:javascript
复制
Turku, Finland, Sri Paramakalyani Centre for Environmental Sciences, Manonmaniam Sundaranar --> University <--, Alwarkurichi, Tamil Nadu 627412, India

正则表达式

/(.*?\.), (.*?)(?:, )([^,]+(?<=university|college|institute)), (.*?); /gi

对RegExp的解释:

  • (.*?\.),:任何事情,直到.,然后是, (第一组)
  • (.*?)(?:, ):在第三组(第二组)之前出现,之前的任何事情。
  • ([^,]+(?<=university|college|institute)):在给定集合的一个词之前的任何东西,直到从后面到前面的第一个逗号(第三组)
  • , (.*?);,之后的任何事情,直到; (第四组)

旗帜:

  • g:全球
  • i:不敏感

如下图所示:RegExp

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68877827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档