簡體   English   中英

正則表達式用於匹配數字,后跟特定的模式

[英]RegEx for matching digits not followed by specific pattern

我試圖建立一個正則表達式來匹配以下樣式的線條:

123 warehouse
124 token warehouse.
153token token abc123; etc. - warehouse 
223abdc token abc green warehouse 

但是這些行不是:

53red warehouse.
323 green token token etc warehouse. 

我構建的正則表達式使用負前瞻,但在https://regex101.com/上進行測試會匹配所有行:

\d+(?!( ?red| ?green)).*(\bwarehouse\b)

有什么錯誤,應如何糾正? 如果很重要,則正則表達式應在Java下編譯(轉義必要的字符后)。

如果使用所有格量詞來防止回溯,則您的模式有效:

\\d++而不是\\d+

這是regex101的演示,它是pcre,但Java regex也應支持這些演示

擁有123red warehouse.

您的正則表達式匹配1個或多個數字12然后不匹配紅色或綠色3red然后匹配warehouse a space的任何字符。

在前幾個數字后添加負前瞻:

\d+(?!\d)(?! ?(?:red|green)).*(\bwarehouse\b)

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM