首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于选择单个空格短语而不是空格的正则表达式

用于选择单个空格短语而不是空格的正则表达式
EN

Stack Overflow用户
提问于 2012-06-04 22:38:51
回答 5查看 173关注 0票数 3

我需要一个相当复杂的正则表达式,它将选择它们之间有一个空格的单词,并且可以在它们中包括'-‘符号,但它不应该选择连续的空格。

代码语言:javascript
运行
复制
'KENEDY JOHN G JR E'                  'example'                 'D-54'

我尝试了以下正则表达式:

代码语言:javascript
运行
复制
\'([\s\w-]+)\'

但是它选择了连续的空格,这是我不希望它做的。

我想要选择表达式

代码语言:javascript
运行
复制
'KENEDY JOHN G JR E'
'example'
'D-54'
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-04 22:42:45

也许,

代码语言:javascript
运行
复制
\'([\w-]+(?:\s[\w-]+)*)\'

编辑

如果不允许使用前导/尾随破折号(在单词边界上),则应为:

代码语言:javascript
运行
复制
/\'(\w+(?:[\s-]\w+)*)\'/
票数 3
EN

Stack Overflow用户

发布于 2012-06-04 22:44:12

这样的表达式应该可以做到这一点:

代码语言:javascript
运行
复制
'[\w-]+(?:\s[\w-]+)*'
票数 1
EN

Stack Overflow用户

发布于 2012-06-04 22:51:38

试试这个:

代码语言:javascript
运行
复制
my $data = "'KENEDY JOHN G JR E'                  'example'                 'D-54'";

# Sets of
#     one or more word characters or dash
#     followed by an optional space
# enclosed in single quotes
#
# The outermost ()s are optional. There just
# so i can print the match easily as $1.
while ($data =~ /(\'([\w-]+\s?)+\')/g)
{
    print $1, "\n";
}

输出

代码语言:javascript
运行
复制
'KENEDY JOHN G JR E'
'example'
'D-54'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10883160

复制
相关文章

相似问题

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