2017-05-21 35 views
-1

我有以下约定文本工作:获取[VALUE]]或[[标签名称]] XXXX [/ TAGNAME]用正则表达式

  1. [[PLACEHOLDERNAME]]是其文本将在占位符更换。

  2. [[VALUENAME]Text or Value[[/VALUENAME]]是我需要从文本中读出的键/值对。

的键/值对(2)我得到

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

,但我有问题,用不同的正则表达式,因为这

\[\[(?<placeholder>.*\w)\]\] 
只得到占位符(1)

也会从2中得到。

欢迎任何提示!

+1

做什么你的意思是*用不同的正则表达式*?什么正则表达式和什么问题呢?我现在明白了,就好像你需要'。*?'而不是'。*'。 –

+0

文本包含许多占位符(1.)和键/值(2.)语句。 我需要将它们提取到单独的列表或字典中。对于2.我使用上面的正则表达式,并且效果很好。 但我不能单独获取占位符(1.)而不捕获键/值语句(2.),因为它们也以'[[xxxx]]开头。 – Igotcha

+0

我明白你知道你在说什么,但我们没有看到你的问题。请参阅[如何提问](http://stackoverflow.com/help/how-to-ask)并提供[MCVE(最小完整可验证示例)](http://stackoverflow.com/help/mcve)。 –

回答

0

如果我理解正确的话,你也可以使用负前瞻:

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

,那么你可能要禁止在开始的斜线:

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

demo

+0

第二个是我正在寻找的: \ [\ [(?!/)(? [^ \]] * \ w)\] \](?!。* \ [\ [/ \ 1 \] \]) 非常感谢! – Igotcha