正则表达式用于双方括号之间的文本,但不能用于连字符之间

时间:2019-03-07 13:50:16

标签: regex

我找不到适合我情况的正则表达式。我需要将所有文本放在双方括号之间,但不要在连字符之间。例如:

[[abc]] would get abc
[[-abc]] would get -abc 
[[abc-]] would get abc-
[[-abc-]] would get nothing

我几乎可以用我想要的东西:

\[\[(\-(.*?)\-)\]\]

但是此表达式返回双方括号AND之间的文本,该文本也位于连字符之间(我需要不要在连字符之间)

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

此模式对我有用:

(?!\[{2}\-[^(\-|\s)]*\-\]{2})\[{2}([^(?:\]{2})]*)\]{2}

匹配不需要不需要的模式([[-foobar-]])非常容易,因此该解决方案使用否定的前瞻性来确保以下不需要 strong>匹配该模式,然后将双括号之间的所有内容作为捕获组。

在此处进行测试:https://regex101.com/r/pxbwKo/2