2017-10-04 74 views
-2

我想用RegEx搜索產品參考的所有匹配項。該產品參考了帶有「XXV-」的萬能星,後面跟着一個數字,有時還帶有一個或兩個字符。一些例子:「XXV-1234-AB」,「XXV-1232」,「XXV-12-X」。比賽的唯一主力是開始。正則表達式與多個或條件匹配

在此示例:

<div>Reference to search is XXV-1234-BH</div> 
<div>Other reference to search is XXV-1235-VC 
</div> 
<div>And XXV-1236-HG 
also</div> 

我需要數學的所有的樹代碼,用一個正則表達式更好。

我試着用:(?= XXV - )。

  1. *(= <?),只有匹配的第一個?
  2. (= XXV - ?)。?*(= \ N 2)匹配,而是與</DIV>的第一

它更多鈔票,以匹配 「<」 或「\ N「?

謝謝你的時間!

+1

你知道_exactly_什麼產品參考的樣子(「XXV-」,那麼數字,那麼也許1或2個字符),那麼,爲什麼你使用'。*?',並用_unknown_界定它像「(?= <)」錨?您不知道產品參考後會發生什麼,那麼爲什麼要以這種方式設計您的正則表達式?將「XXV-」,「一些數字」,「可能是1/2個字符」轉換爲正則表達式將會是微不足道的......在標題中提到的這些「多個或條件」在哪裏?我只能看到「可能」的情況。 –

+0

你說得對,並且Tom Lord Works提供的解決方案! – Duefectu

回答

2

爲什麼你的問題關於'匹配'<「或」\ n「'?你確切知道格式應該是什麼,所以只需爲它構建一個正則表達式。

產品參考文獻總是帶有「XXV-」,後跟一個數字,在某些情況下帶有一個或兩個字符。

XXV-\d+(-[A-Z]{1,2})? 
  • [A-Z]手段 「AZ之間的任何字符」:

這可以通過匹配。如果您想要包含其他字符,例如小寫,你可以使用:[a-zA-Z]

  • {1,2}意味着前一模式的1-2(在這種情況下,[A-Z])。
  • ?使捕獲組成爲可選。
  • \d表示任何數字,即相當於[0-9]
  • Here is a demo, with some test cases