簡體   English   中英

如何將負向后搜索與未知字符之間進行匹配?

[英]How to match negative lookbehind with unknown characters between?

我需要匹配所有.get('asfd') ,但是僅在事先不存在.wait(.*)的情況下。

.wait(500).get('asdf') // shouldn't match
.asdf('asdf').get('asdf') // should match

不幸的是,負向后看不支持量詞,因此我不確定如何描述\\d* .wait().get('asdf')之間的空白。

匹配此不可量化區域的方法是什么?

我想我需要某種方式來描述在最后一組括號后面沒有wait ,但是有一種簡單的方法可以做到這一點嗎?

謝謝

好的,花了很多時間進行實驗,提出這個問題有助於弄清情況。

答案是要描述兩者之間:與后向分離

(?<!wait)
(?:\([^)]*\))
(\.get\(.*\))

第二部分允許任何字符,直到有括號為止。 有時,第一個括號出現在引號內,應該忽略。 不考慮轉義的引號,我的整個正則表達式變為:

((?<!wait)\(.*\)\s*)(\.get\((?:"[^"]*"|'[^']*')[^\)]*\))

我用它在匹配組1( $1 )和2( $2 )的.get() .wait()之前/之后插入.wait()

$1.wait(234)$2.wait(234)

在此處輸入圖片說明

在此處輸入圖片說明

我不是正則表達式專家,但是如何呢?

/^(?!\\.wait\\(\\d+\\)).*\\.get\\(.*\\)/g

說明:

(?! 負向超前。指定在主表達式后不能匹配的組(如果匹配,則結果將被丟棄)。

\\. 轉義字符。 匹配“。” 字符(字符代碼46)。

w 角色。 匹配“ w”字符(字符代碼119)。 區分大小寫。

a 角色。 匹配一個“ a”字符(字符代碼97)。 區分大小寫。

i 性格。 匹配“ i”字符(字符代碼105)。 區分大小寫。

t 字符。 匹配一個“ t”字符(字符代碼116)。 區分大小寫。

\\( 轉義字符。匹配一個“(”字符(字符代碼40)。

\\d 數字。 匹配任何數字字符(0-9)。

+ 量詞。 匹配1個或多個前面的令牌。

\\) 轉義字符。 匹配“)”字符(字符代碼41)。

. 點。 匹配除換行符以外的任何字符。

* 量詞。 匹配0個或多個前面的令牌。

\\. 轉義字符。 匹配“。” 字符(字符代碼46)。

g 字符。 匹配“ g”字符(字符代碼103)。 區分大小寫。

e 字符。 匹配“ e”字符(字符代碼101)。 區分大小寫。

t 字符。 匹配一個“ t”字符(字符代碼116)。 區分大小寫。

\\( 轉義字符。匹配一個“(”字符(字符代碼40)。

. 點。 匹配除換行符以外的任何字符。

* 量詞。 匹配0個或多個前面的令牌。

\\) 轉義字符。 匹配“)”字符(字符代碼41)。

暫無
暫無

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

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