避免正则表达式捕获字符串的内容(引号之间)

时间:2013-04-20 03:25:24

标签: regex regex-negation

我正在使用以下正则表达式来捕获遵循某些条件的字符串数组(例如:它不是由某个字母或数字加上,只包含由单引号或双引号括起来的字符串):

/^?[ =>]\[(('|")[^('|")\s]*('|")(, ?)?)+\]/

它应该捕获

["bla", "ble", "blo"]

然而,它不应该捕获,如果它是(单引号或双引号)之间的字符串的一部分:

'["bla", "ble", "blo"]'

我应该添加什么以避免捕获那些不需要的案例?

1 个答案:

答案 0 :(得分:1)

为您的模式添加负向lookbehind / lookahead表达式:

(?<!['])(?!['])(\[(('|")[^('|")\s]*('|")(, ?)?)+\])

在测试时为我工作,但它可能取决于您的正则表达式引擎。