我有一個長長的Regex模式中的幾個匹配組。圍在中間我有在匹配組中丟棄字符
...(?<number>(?:/(?:digit|num))?\d+|)...
應該匹配類似/num9
,/digit9
或9
或空白(因爲我需要命名組出現,即使它是空所產生的關聯數組)。
該模式起作用,但如果前兩種情況中的一種匹配,是否可以丟棄/
字符?我嘗試了一個積極的向前看,但似乎你不能使用這些,如果你有表達式之前有表達式。
正在嘗試使用正則表達式來實現嗎?
我有一個長長的Regex模式中的幾個匹配組。圍在中間我有在匹配組中丟棄字符
...(?<number>(?:/(?:digit|num))?\d+|)...
應該匹配類似/num9
,/digit9
或9
或空白(因爲我需要命名組出現,即使它是空所產生的關聯數組)。
該模式起作用,但如果前兩種情況中的一種匹配,是否可以丟棄/
字符?我嘗試了一個積極的向前看,但似乎你不能使用這些,如果你有表達式之前有表達式。
正在嘗試使用正則表達式來實現嗎?
根據您的意見,我認爲您需要在某個時候捕獲/
,否則您的整個正則表達式會失敗。同時你想忽略它,所以它不能成爲你命名組的一部分。因此,通過把它外面並使它可選,同時確保一個數字不是由你來了/
與期望的結果直接前面:
^/?(?<number>(?:(?:digit|num))?(?<!/)\d+|)$
但是鑑於你沒有一個更完整的輸入和正則表達式,我不是100%肯定這會適用於你所有的情況。
向我們顯示您的代碼。 – Jocelyn 2012-08-15 21:01:13
嘗試積極向後看,並將其放在命名組之外。 – FailedDev 2012-08-15 21:02:25
@FailedDev這不符合'/ 9'嗎? – Blake 2012-08-15 21:04:18