2017-05-21 32 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