匹配除了第一个单词和以一个或两个连字符开头的单词

时间:2016-12-27 13:42:24

标签: regex

我希望匹配

之外的任何字词
  • 第一个字
  • 符合(-(-)?\w*(=\w*)?)
  • 的任何内容

示例输入:

  

test --par2 --par23=whatever 0 xd true hello "string test"
  test --par23=whatever 0 xd true hello --par2 "string test"
  test 0 xd "string test" true hello --par2 --par23=whatever

我想要的是:

0, xd, true, hello, "string test"  

我不想要:test--par2--par23=whatever 语言:JavaScript

什么是好主意?

2 个答案:

答案 0 :(得分:1)

The Trick。怎么样匹配你不需要的东西,capturing你需要什么。

不想要

    {li> ^\S+ one or more 非空白位于start\S否定short \s
  • \W-\S+字符串,例如-foo--bar,但需要bar-baz\W 非字符

(抓取)

  • "[^"]+"任何引用的内容(使用negated class
  • \S+一个或多个剩余的非空白

根据匹配优先级进行排序,并与管道|

结合使用
("[^"]+")|^\S+|\W-\S+|(\S+)

See demo at regex101。抢夺两组like in this fiddle

  

[“0”,“xd”,“true”,“hello”,“”string test“”]

如果使用PCRE,您可以skip the unneeded stuff使用动词(*SKIP)(*F)

答案 1 :(得分:0)

我希望我理解你,你的意思是这个吗?

=\S* ([^=]*)

读取group1中的匹配文本。