首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配由空格或逗号分隔的固定长度单词列表?

如何匹配由空格或逗号分隔的固定长度单词列表?
EN

Stack Overflow用户
提问于 2019-08-22 17:19:00
回答 5查看 235关注 0票数 2

单词的长度可以是2或6-10,可以用空格或逗号分隔。这个词只包括字母表,不区分大小写。

以下是应该匹配的词语组:

代码语言:javascript
复制
RE,re,rereRE

不相匹配的组:

代码语言:javascript
复制
RE,rere,rel
RE,RERE

下面是我尝试过的模式

代码语言:javascript
复制
((([a-zA-Z]{2})|([a-zA-Z]{6,10}))(,|\s+)?)

但是不幸的是,这个模式可以匹配这样的字符串:RE,RERE看起来像没有设置单词边界。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-08-22 17:48:45

您可以使用交替匹配chars a-z 2次或6- 10次。

然后重复这个模式0+,在前面加上逗号或空格[ ,]

代码语言:javascript
复制
^(?:[A-Za-z]{6,10}|[A-Za-z]{2})(?:[, ](?:[A-Za-z]{6,10}|[A-Za-z]{2}))*$

解释

  • 字符串的^开始
  • (?:[A-Za-z]{6,10}|[A-Za-z]{2})匹配字符a-z 6 -10或2次
  • (?:非捕获群
  • [, ](?:[A-Za-z]{6,10}|[A-Za-z]{2})匹配逗号或空格并重复以前的模式
  • )*关闭非捕获组并重复0+时间
  • 字符串的$末端

Regex演示

如果支持查找,您还可以断言左侧和右侧的非空白字符\S

代码语言:javascript
复制
(?<!\S)(?:[A-Za-z]{6,10}|[A-Za-z]{2})(?:[ ,](?:[A-Za-z]{6,10}|[A-Za-z]{2}))*(?!\S)

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2019-08-22 17:29:38

代码语言:javascript
复制
([a-zA-Z]{2}(,|\s)|[a-zA-Z]{6,10}|(,|\s))
票数 0
EN

Stack Overflow用户

发布于 2019-08-22 17:31:48

此正则表达式将与第一个案例相匹配,但其他两种情况都不匹配:

^((([a-zA-Z]{2})|([a-zA-Z]{6,10}))(,|[ ]+|$))+$

我在这里假设每一行应该是一个匹配。

这里它在行动中。

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

https://stackoverflow.com/questions/57614255

复制
相关文章

相似问题

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