正则表达式在第一个斜杠之前获取除引号之外的所有内容

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

^(.*?)/

现在,我迷失了.根据下面的不同文本,我只想要下面的粗体部分:

文本

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 demo

细节

> ^ – 字符串的开头
>(?:[^ /“’] |”[^“] *”|'[^’] *’) – 1次或多次出现

> [^ /“’] – 除/之外的任何字符,”和“
> | – 要么
>“[^”] *“ – a”,除“之外的任何0个字符,然后”
> | – 要么
>'[^’] *’ – a’,除了’之外的任何0个字符,然后’

点赞