【问题标题】:Regex to get everything before the first slash except between quotes正则表达式在第一个斜杠之前获取所有内容,引号之间除外
【发布时间】:2019-01-10 17:06:00
【问题描述】:

我希望创建一个正则表达式来提取第一个斜杠之前的所有内容,除非它是单引号或双引号。目前,我有:

^(.*?)/

现在,我迷路了。根据下面不同的文字,我只想要下面的粗体部分:

文字

abc,def,ghi,jkl,mno /123
/abc,def,ghi,jkl,mno 123
abc,/def,"/ghi",jkl,mno /123
abc,def,"/ghi" ,jkl,mno /123
abc,def,'/ghi',jkl,mno /123

【问题讨论】:

    标签: regex


    【解决方案1】:

    你可以使用

    ^(?:[^/"']|"[^"]*"|'[^']*')+
    

    regex demo

    详情

    • ^ - 字符串开头
    • (?:[^/"']|"[^"]*"|'[^']*')+ - 出现 1 次或多次
      • [^/"'] - 除/"' 之外的任何字符
      • | - 或
      • "[^"]*" - 一个",除" 之外的任何0+ 个字符,然后是"
      • | - 或
      • '[^']*' - 一个',除' 之外的任何0+ 个字符,然后是'

    【讨论】:

    【解决方案2】:

    怎么样:

    ^(.*?)\/(?=([^\"\']*\"[^\"\']*\")*[^\"\']*$)
    

    See Regex Demo

    使用第 1 组

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2017-05-22
      相关资源
      最近更新 更多