使用正则表达式获取[[VALUE]]或[[TAGNAME]] xxxx [[/ TAGNAME]]

时间:2017-05-21 20:46:22

标签: c# regex

我使用具有以下约定的文本:

  1. [[PLACEHOLDERNAME]]是文本中的占位符,将被替换。

  2. [[VALUENAME]Text or Value[[/VALUENAME]]是一个Key / Value对,我需要从文本中读出来。

  3. 我得到的键/值对(2.)

    Regex dataValueRE = new Regex(@"\[\[(?<datakey>.*\w)]\](?<datavalue>.*?)\[\[/\1\]\]", RegexOptions.Singleline);
    

    但我有问题只能使用不同的正则表达式占位符(1.),因为这个

    \[\[(?<placeholder>.*\w)\]\]
    

    也会从2开始。

    欢迎任何提示!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以使用否定前瞻:

\[\[(?<placeholder>[^\]]*\w)\]\](?!.*\[\[/\1\]\])

然后你可能想要在开头禁止使用斜杠:

\[\[(?!/)(?<placeholder>[^\]]*\w)\]\](?!.*\[\[/\1\]\])

请参阅demo