2015-12-08 54 views
0

我主要有一個;(分號)分隔的列表,並希望從列表中提取包含lib1的條目。在這種情況下,將..\..\..\libs\lib1\include正則表達式:在一個分隔列表中查找項目

<A>..\src;..\include;..\..\..\libs\lib1\include;..\..\..\libs\lib2\include</A> 

我試着用這個正則表達式

[>;](.*?lib1.*?[;<]) 

但它幾乎

..\src;..\include;..\..\..\libs\lib1\include; 

我懷疑我需要某種先行整個事​​情的匹配,我在lib1發生之前不匹配另一個;字符,但我不太確定如何去做。

+1

做一點小小的搜索,這已經回答了很多次。 –

+0

我已經做了相當多的谷歌搜索,有如何在這樣的列表之間拆分,[刪除列表中的項目]的示例(http://stackoverflow.com/questions/19827136/regex-for-removing -an-item-from-a-comma-separated-string),但在此示例中,要移除的整個字符串是已知的。我只知道要匹配的字符串的一部分。我也試過這個表達式,它帶有負向前瞻'[>;]((!!。*?)。*?lib1。*?[; <])',但它不再匹配任何東西。 – kiki

+0

你使用什麼樣的正則表達式?你在做什麼語言或編輯?並非所有的正則表達式引擎都是平等的恐怕。請在原始帖子中添加額外的標籤以表明這一點。 –

回答

1

這個正則表達式在列表中只有一個lib1時有效。然而,你說"entries"(複數),因此捕獲循環遍歷每個元素,如果我們知道你在做什麼語言,這將更容易。有關示例,請參閱regex101

這裏是正則表達式:

^.*[>;](.*lib1.*?)[;<] 

這可以解讀爲:

^  Anchor to the beginning of the line 
.* Followed by zero or more of any characters 
[>;] Followed by a character class consisting of a greater-than sign or 
     a semi-colon 
(.*lib1.*?) Followed by a remembered group of zero or more characters 
       followed by the desired "lib1" followed by optional zero 
       or more characters 
[;<] Followed by a character class consisting of a semi-colon 
     or a less-than sign