2017-02-02 36 views
0

比賽多次出現,纔有可能發現僅使用正則表達式在全場比賽中的多個匹配的羣體?正則表達式 - 內

下面給出

{} 1234 Lorem存有胡蘿蔔,生態番茄湯的文本。 **然而 針對性的蛋白質,但也增強了。 **的Lorem feugiat SAPIEN,但 sagittis麥格納。性能船在宣傳,**需要它,我 箭頭和胡蘿蔔。或大直徑,地址不會是一個牀或枕頭 融資。 {} 4321 Lorem存有....

我想組號碼中的**所有的出現次數。

1想出了以下內容:

https://regex101.com/r/s746be/2

正如你可以看到它只有組中的第一組中,因爲懶惰問號或最後,如果1移除問號。

+0

你的意思是要找到之間的''{1234} {} 4321和''一個''** 3次 出現?您是否在使用.NET或PCRE正則表達式引擎或任何其他?你要替換這些星號? –

+0

是的,但不是隻有三個出現在某些全場比賽可能是4個或更多。我使用.NET :) – Sn00d

+0

但是你用什麼代替呢?你可以訪問代碼?這是100#或VB.NET?此外,1認爲你可以使用['(?<= {\ d +}(?(?!{\ d +})。)*?)\ * \ *(?=。* {\ d +})'] (http://regexstorm.net/tester?p=%28%3f%3c%3d%7b%5cd%2b%7d%28%3f%3a%28%3f!%7b%5cd%2b%7d%29 %29%3F%29%5C「%5C *%28%3F%3D。*%3F%7B%5CD%2B%7D%29&T = ** +%7b1234%7D +顯影劑。+ ** +但是+ 。+桑達歐盟+ + + **宣傳%2C + + +需求已經被宣佈+或+ + +和畢業。+%7b4321 LOREM%7D + + +他...... **),但它是不是有效的。 –

回答

0

爲什麼不把它分解爲幾個簡單的步驟,而不是使用一個非常大的低效正則表達式?

你可以嘗試做這樣的事情:

1)使用一個簡單的正則表達式像這樣搶{1234}{4321}之間的文本:

/\{\d+\}(.*?)\{\d+\}/ 

2)提取這些之間的匹配的文本

:二定界符
3)運行在該第二全局正則表達式的搜索使用簡單的正則表達式模式像這樣匹配的內部文本
/\*\*/g 

希望這有助於