我想知道如果存在例如給定的這個輸入端的正則表達式:只用一個正則表達式就可以解決這個問題嗎?
lkjs kjsfjk ijsfjá13total wer6klje附加LNK jshv kjsdfjk DJ d 22total kejk jksfljkakvhjrĴ3total fkljbher JR6 hrew7 HWR 41total sfdkj附加iuwefjkwf7 7erfh SF 5總 KLJ KJ kjsef87 jhwfe7 89 JHF
可輸出這3場比賽,這是數字後面total
,不包含(尋找下一個數字之前)之後的字additional
:
22
3
5
所以,例如我不匹配13,因爲
13total wer6klje附加LNK jshv kjsdfjk DJ d 22total
包含單詞additional
我沒有匹配41
因爲
41total sfdkj額外iuwefjkwf7 7erfh SF 5總
包含附加字
讓我解釋示例中使用的輸入結構:
randomText 13total randomText aditional randomText
22total randomText
3total randomText
41total randomText aditional randomText
5total randomText
所以基本上輸入是一樣的東西:
randomText X_total randomText_that_contains_or_not_'additional'
X_total randomText_that_contains_or_not_'additional'
....
X_total randomText_that_contains_or_not_'additional'
我知道如何使用一些額外的代碼來解決這個問題(使用多個模式和比賽,如果其他結構...),但我正在使用的系統,不能使用這些。它只是可以滿足一個正則表達式(這是一個複雜的系統,不容易修改)。
因此,例如,用正則表達式[0-9]+(?=total)
我會得到這個匹配:13
,22
,3
,41
,5
,但正如我說,我只需要22
,3
,5
燦任何人建立一個更復雜的正則表達式匹配這3個數字?
謝謝!
'\ D'是一個很好的技巧,可用於所提供的示例輸入,但我不確定實際文本是否保證不包含任何數字。你是否可以讓「附加」前面的文本只允許包含「\ d + total」? – Bergi
@Bergi,我當然可以看到我的更新 – stema