一个正则表达式捕获由一个 space-字符分隔的单词,并结合相反的捕获出现超过一个 space-字符
One regex to capture words separated by one space-character in combination with the opposite capture occurrences more than one space-character
我希望只有一个正则表达式来捕获由一个 space-字符分隔的单词,并结合相反的捕获出现超过一个 space-字符
我想涵盖以下示例:
This line with sometimes more than 1 space needs to be captured in 3 matches with 2 groups.
我希望有以下群体:
([This line with][ ])([sometimes more than][ ])([1][ ])space needs to be captured in 3 matches with 2 groups.
两者取其一是没问题的。
IE。
捕获多个 space-char:
([\s]{2,})
并捕获仅由一个 space-char 分隔的单词(参见 ):
\S+(?:\s\S+)*
您可以使用 alternation 来匹配一个单词后跟单个 space 的重复模式和一个单词或匹配 2 个或更多 spaces
\S+(?: \S+)*| {2,}
说明
\S+
匹配 1+ 个非白色space 个字符
(?: \S+)*
重复 0+ 次匹配 space 和 1+ 非白色 space 字符
|
或
{2,}
重复匹配一个 space 2 次或更多次
如果您想匹配白色 space 字符,您可以将 space 替换为 \s
但请注意,它也可能匹配换行符。
编辑
对于更新后的问题,您可以使用 2 个捕获组:
(\S+(?: \S+)*)( {2,})
说明
(
捕获 组 1
\S+
匹配 1+ 个非白色space 个字符
(?: \S+)*
重复 0+ 次匹配 space 和 1+ 非白色 space 字符
)
关闭组 1
(
捕获 第 2 组
{2,}
匹配 2 个或更多 spaces
)
关闭组 2
我希望只有一个正则表达式来捕获由一个 space-字符分隔的单词,并结合相反的捕获出现超过一个 space-字符
我想涵盖以下示例:
This line with sometimes more than 1 space needs to be captured in 3 matches with 2 groups.
我希望有以下群体:
([This line with][ ])([sometimes more than][ ])([1][ ])space needs to be captured in 3 matches with 2 groups.
两者取其一是没问题的。 IE。 捕获多个 space-char:
([\s]{2,})
并捕获仅由一个 space-char 分隔的单词(参见
\S+(?:\s\S+)*
您可以使用 alternation 来匹配一个单词后跟单个 space 的重复模式和一个单词或匹配 2 个或更多 spaces
\S+(?: \S+)*| {2,}
说明
\S+
匹配 1+ 个非白色space 个字符(?: \S+)*
重复 0+ 次匹配 space 和 1+ 非白色 space 字符|
或{2,}
重复匹配一个 space 2 次或更多次
如果您想匹配白色 space 字符,您可以将 space 替换为 \s
但请注意,它也可能匹配换行符。
编辑
对于更新后的问题,您可以使用 2 个捕获组:
(\S+(?: \S+)*)( {2,})
说明
(
捕获 组 1\S+
匹配 1+ 个非白色space 个字符(?: \S+)*
重复 0+ 次匹配 space 和 1+ 非白色 space 字符
)
关闭组 1(
捕获 第 2 组{2,}
匹配 2 个或更多 spaces
)
关闭组 2