我不能得到这个工作。
我试图从[A](B)
中匹配A和B,但只应在匹配项没有以!
开头的情况下进行匹配。比赛[A](B)但不是![A](B)
我已经到目前为止。 /\[([^\]]+)]\(([^)]+)\)/
它匹配A和B,但如果我加[^\!]
它不会匹配任何东西。
/[^\!]\[([^\]]+)]\(([^)]+)\)/
值![A](B)
可以在一个较大的字符串的任何地方。
任何想法为什么这不起作用?
我不能得到这个工作。
我试图从[A](B)
中匹配A和B,但只应在匹配项没有以!
开头的情况下进行匹配。比赛[A](B)但不是![A](B)
我已经到目前为止。 /\[([^\]]+)]\(([^)]+)\)/
它匹配A和B,但如果我加[^\!]
它不会匹配任何东西。
/[^\!]\[([^\]]+)]\(([^)]+)\)/
值![A](B)
可以在一个较大的字符串的任何地方。
任何想法为什么这不起作用?
这TextPad工作对我来说(这就是我对此刻正则表达式,你可能不得不修改逃逸。):
\(^\|[^\!]\)\[[^]]+\]([^)]+)
的\(^\|[^\!]\)
匹配行的开头或!
以外的字符。
如果您使用的是支持回顾后当时正则表达式以下应该工作
(?<!!)\[A\]\(B\)
,第一组是指没有一个!背后
Lookbehind不受支持,我正在使用JavaScript。 – Oleander
既然你不能使用向后看断言,可使用两种不同的正则表达式与逻辑运算符:
/\[([^\]]+)]\(([^)]+)\)/ && !(/!\[([^\]]+)]\(([^)]+)\)/)
什么叫“它不会匹配任何”呢? [A](B)不再与你的新模式匹配/ [^ \!] \ [([^ \]] +)] \(([^)] +)\)/? – PierrOz
/[^ \!] \ [([^ \]] +)] \(([^)] +)\)/不会与[[A](B)]匹配。 – Oleander
什么正则表达式风格/编程语言? –