Regex 匹配[A](B)但不匹配![A] (B)

Regex 匹配[A](B)但不匹配![A] (B),regex,Regex,我不能让它工作。 我正在尝试从[A](B)匹配A和B,但它应该只在不以开头的情况下进行匹配 到目前为止,我已经完成了这项工作。 /\[([^\]+)]\([^]+)\/ 它匹配A和B,但如果我添加[^\!]它将不匹配任何内容 /[^\!]\[([^\]]+)]\([^]+)\)/ 值![A] (B)可以是较大字符串中的任意位置 你知道为什么这不起作用吗?如果你使用的正则表达式支持lookback's,那么下面的方法应该会起作用 (?<!!)\[A\]\(B\) (? 第一组表示没有!be

我不能让它工作。
我正在尝试从
[A](B)
匹配A和B,但它应该只在不以
开头的情况下进行匹配

到目前为止,我已经完成了这项工作。
/\[([^\]+)]\([^]+)\/

它匹配A和B,但如果我添加
[^\!]
它将不匹配任何内容

/[^\!]\[([^\]]+)]\([^]+)\)/

![A] (B)
可以是较大字符串中的任意位置


你知道为什么这不起作用吗?

如果你使用的正则表达式支持lookback's,那么下面的方法应该会起作用

(?<!!)\[A\]\(B\)
(?

第一组表示没有!behind

如果您使用的正则表达式支持lookbehind,那么下面的方法应该有效

(?<!!)\[A\]\(B\)
(?

第一组意思是后面没有一个!试试这个:
([^!]\124^)(\[a\]\(B\)
试试这个:
([^!]\124^)(\[a\]\(B\)
这对我来说在TextPad中很有效(这是我目前对regex的所有功能。你可能需要修改转义):


\(^\\[^\!]\)
匹配行首或字符,而不是

这在TextPad中对我很有用(这是我目前对regex的所有功能。您可能需要修改转义):


\(^\\[^\!]\)
匹配行首或除
以外的字符

由于不能使用查找后断言,因此可以使用两个具有逻辑连接符的不同正则表达式:

/\[([^\]]+)]\(([^)]+)\)/ && !(/!\[([^\]]+)]\(([^)]+)\)/)

由于不能使用look-behind断言,因此可以使用两个具有逻辑连接符的不同正则表达式:

/\[([^\]]+)]\(([^)]+)\)/ && !(/!\[([^\]]+)]\(([^)]+)\)/)

你说的“它什么都不匹配”是什么意思?[A](B)不再与你的新模式匹配了/[^\!][([^]+])([^]+)/?/[^\!][([^]]+])([^]]+])([^]+)/不匹配<代码>[A](B)
。什么正则表达式风格/编程语言?尝试匹配字符串的开头:([^\!])怎么样?“它什么都不匹配”是什么意思?[A] (B)不再与您的新模式匹配/[^\!][([^]]+)]([^]+)/?/[^\!][([^]]+)]([^]]+)/将不匹配
[A](B)
。什么正则表达式风格/编程语言?如何尝试匹配字符串开头:([^\!])Lookbehind不受支持,我正在使用JavaScript。Lookbehind不受支持,我正在使用JavaScript。我对它有一些问题(
/([^!]|^)\[([^\]+)]\([^]+)\([^]+)\/gm
)。它匹配
[A](B)
[A](B)[C](D)
,但不匹配
[A](B)[C](D)
。你知道为什么吗?与我匹配所有的示例--[22:15:15.022]/([^!]| ^)[([^]+])([^)]+)/gm.test('[A](B)[C](D)][22:15:15.029]trueIt在Ruby
[“[”,“](B)”,“(B)”,[”,“(C](D)”,(D)]
,并在JavaScript中引发一个错误。
SyntaxError:Invalid正则表达式:/(^+)/(^+)/)(^+)/)(^+)[]“
是的,因为这个
/([^!]|^)\[([^\]+)]\([^]+)\/
与您尝试的
/([^!]|^)[([^]]+])([^]+)/
不同。我的解决方案仍然有效,问题是您的代码;-)我对它有一些问题(
/([^!]|^)\[([^\]+)]\([^]+)\/gm
)。它匹配
[A](B)
[A](B)[C](D)
,但不匹配
[A](B)[C](D)
。你知道为什么吗?与我匹配所有的示例--[22:15:15.022]/([^!]| ^)[([^]+])([^)]+)/gm.test('[A](B)[C](D)][22:15:15.029]trueIt在Ruby
[“[”,“](B)”,“(B)”,[”,“(C](D)”,(D)]
,并在JavaScript中引发一个错误。
SyntaxError:Invalid正则表达式:/(^+)/(^+)/)(^+)/)(^+)[]“
是的,因为这个
/([^!]|^)\[([^\]+)]\([^]+)\/
与您尝试的
/([^!]|^)[([^]]+])([^]+)/
不同。我的解决方案仍然有效,问题是您的代码;-)