我想寫一個正則表達式,它會讓我在這個列表中的第21個字段的內容中以I開頭的行,只要該字段包含這種格式的數字NNN-NNNNNN(如001-123456):如何寫沒有災難性回溯的這個正則表達式
T|112|| | | |AZ |D |1 | 1|
I| 10|ACAA |BY CORD EACH | 10.00-| .99 | | .36 |1 | 1|D |I|CO |BTE |N| | .00 | .00 |15 |1 |001-123456 |ACAA
I| 20|LEES03 |TINTED OZ | 2.00-| 6.50 | | 4.48 |1 | 1|D |I|FL |LTGE |N| | .00 | .00 |45 |1 |001-234555 |JEE
I| 20|LEES03 |TINTED OZ | 2.00-| 6.50 | | 4.48 |1 | 1|D |I|FL |LTGE |N| | .00 | .00 |45 |1 | |JEE
I| 20|LEES03 |TINTED OZ | 2.00-| 6.50 | | 4.48 |1 | 1|D |I|FL |LTGE |N| | .00 | .00 |45 |1 |001-234552 |JEE
下面是簡單的regex,我使用,有我在拍攝第二捕獲組在該領域的內容:
^I(\|.*?){20}(\d{3}-\d{6})
我已閱讀關於災難性的回溯,但我的正則表達式技能是有限的,我不明白如何寫這個正則表達式,以便我不會得到災難性的回溯。
幫助將不勝感激。
當你知道它有格式'NNN-nnnnnn'爲什麼不乾脆用'\ d {3} - \ d {6}'? –
@noob我_am_使用它,但我只對第21個字段感興趣 - 我不想在任何其他字段中匹配此字符串。 – Zek
由於您其他字段沒有使用那個模式的數字就會匹配第21個字段。 –