正则表达式匹配,直到另一场比赛

时间:2015-05-07 08:59:23

标签: regex

我正在尝试创建一个解析产品属性的正则表达式,例如:
" led遇到了interne weerstand 1 / 4w 1k"会解析成:

[0] met interne weerstand  
[1] 1/4w  
[2] 1k

到目前为止,我有这个正则表达式:
/(?:met .*)|(?:(?:\d+\/)?\d+\w ?)|(?:\d+ ?in ?\d+)/

我正试图将1/4w 1/4s 1/4w 1/4d 3 in 1 1% led met interne weerstand 1/4w与之匹配。

它没有像我希望的那样工作:

array (size=6)
  0 => 
    array (size=1)
      0 => string '1/4w ' (length=5)
  1 => 
    array (size=1)
      0 => string '1/4s ' (length=5)
  2 => 
    array (size=1)
      0 => string '1/4w ' (length=5)
  3 => 
    array (size=1)
      0 => string '1/4d ' (length=5)
  4 => 
    array (size=1)
      0 => string '3 in 1' (length=6)
  5 => 
    array (size=1)
      0 => string 'met interne weerstand 1/4w' (length=26)

Met interne weerstand也匹配1 / 4w,但我希望1 / 4w成为一个单独的匹配。
我该怎么做?

1 个答案:

答案 0 :(得分:1)

(?:met .*?(?=(?:(?:\d+\/)?\d+\w ?)|$))|(?:(?:\d+\/)?\d+\w ?)|(?:\d+ ?in ?\d+)

        ^^

non greedy方法可以为您提供前瞻。参见演示。

https://regex101.com/r/bN8dL3/9