使用regex,如何选择前3个单词(包括逗号/其他字符)



练习一些正则表达式。尝试只获取RegularExpressions,abbreviated从以下数据

Regular Expressions, abbreviated as Regex or Regexp, are a string of characters created within the framework of Regex syntax rules.

使用(w+S?),我得到所有单词,如果存在的话,包括一个非空白字符。

如何只获得RegularExpressions,abbreviated

编辑:

为了澄清,我正在寻找RegexExpressions,abbreviated单独无空格

不是Regex Expressions, abbreviated(此处包含空格(

Regex不能"选择";。它只能匹配和捕获。

这将前3个单词(包括可选的尾部逗号(捕获为组1、2和3:

^(w+,?)s+(w+,?)s+(w+,?)

观看现场演示。

正如@Bohemian所指出的,在regex中,您不能选择,而是捕获。如果您使用的Regex实现支持它,那么捕获的组将作为匹配的一部分返回。例如,在JS中,如果将结果分开,就会发生这种情况。

捕获组是通过在括号中对要取出的匹配部分进行分组来创建的

为了匹配这三个特定的单词,正则表达式将是以下

/(Regular) (Expressions), (abbreviated)/

注意,你关心的单词在括号内,而你不想要的字符串部分(如空格和逗号(在字符串外

你可以这样使用它(javascript代码(

const string = "Regular Expressions, abbreviated as Regex or Regexp, are a string of characters created within the framework of Regex syntax rules." 
const regex = /(Regular) (Expressions), (abbreviated)/; 
string.match(regex); // returns [ "Regular Expressions, abbreviated", "Regular", "Expressions", "abbreviated" ]

请注意,在结果中,第一个元素是完全匹配的,第二个、第三个和第四个元素是您的捕获组,您可以使用它们,就好像您从字符串中选择了它们一样

要匹配由空格或昏迷分隔的任何三个单词,您可以使用

/(w+),?s?(w+),?s?(w+),?s?/

\w表示字符\s表示空间?表示可能存在0或1个预览最后,括号将单词分组,并省略所有其他内容,与上面的示例相同

你可以这样使用它(javascript代码(

const string = "Regular Expressions, abbreviated as Regex or Regexp, are a string of characters created within the framework of Regex syntax rules." 
const regex = /(w+),?s?(w+),?s?(w+),?s?/; 
string.match(regex); // returns [ "Regular Expressions, abbreviated", "Regular", "Expressions", "abbreviated" ]

最新更新