2

我有以下字符串:

Select SizesS M L XL

而且我想在“选择尺寸”之后立即提取尺寸,基本上是通过在一侧或两侧捕获不是“选择尺寸”的所有内容。这必须由正则表达式单独完成,因为 ImportIO 不支持使用方法。

这是我到目前为止所拥有的:

(?:Select Sizes)\w(\s\w)*

提前致谢!

4

3 回答 3

4

你可以使用lookbehind,

(?<=Select Sizes)(.*)

演示

或者

Select Sizes(\S+)\s*(\S+)\s*(\S+)\s*(\S+)

演示

四个捕获组用于捕获字符串后面的非空格字符Select sizes

或者

> "Select SizesS M L XL".split(/Select Sizes| /g)
[ '',
  'S',
  'M',
  'L',
  'XL' ]
于 2014-07-27T15:21:06.327 回答
2

您可以尝试简单的字符串操作:(如果需要,也可以使用trim()

"Select SizesS M L XL".substring(12).split(" ");

或更好地使用

"Select SizesS M L XL".substring("Select Sizes".length).split(" ");

输出:

["S", "M", "L", "XL"]

如果您只使用捕获组查找正则表达式,则从下面的正则表达式模式中的索引 2 获取匹配的组:

(Select Sizes)?\s*(\w+)\s*

Note: I assume there is nothing behind the Select Sizes and there are only sizes in the given string.

Here is demo

于 2014-07-27T15:29:54.453 回答
2

Here is a pure regex solution if you would like to evaluate the same

(?<!Select\s)(?<=Sizes|\s)(\w+)

match all modifier /g is applied to above regex

result for the test string Select SizesS M L XL

MATCH 1

  1. [12-13] S

MATCH 2

  1. [14-15] M

MATCH 3

  1. [16-17] L

MATCH 4

  1. [18-20] XL

demo at regex101.com

于 2014-07-28T01:47:33.940 回答