2017-10-17 140 views
1

我有這個字符串:正則表達式,匹配ccurrenced文本

*Field1=0(1936-S),Field13=0(2),Field2=0(),Field4=0(19.01.17),Field3=0(),Field5700=0(),Field5400=0(KS),Field14=0(21)* 

我需要存儲字段N的第n個值,所以我嘗試這樣做: (?<=Field[0-9]=0){4}?.*?(?=,)

這給我(1936-S)當我把N = 4,我預計19.01.17

你能幫助我嗎?

+0

'(?<= Field [0-9] = 0){4}?。*?(?=,)'根本不起作用,您無法量化零寬度斷言。你的'Field'後面有一個數字:爲什麼不使用它?嘗試['Field4 = 0 \(\ K [^,)] +'](https://regex101.com/r/h2raiA/1) –

+0

我沒有使用Field4 = 0 \(\ K [^,)] + becouse我需要在這個「數組」中找到第四個出現的字段並選擇值。例如在另一個字符串中可以有Field8 –

+0

你在Swift中使用它嗎?你使用了nsregularexpression iOS標籤,這就是爲什麼我問。 –

回答

0

你可以使用

^\*(?:Field[0-9]+=0\([^)]*\),){3}Field[0-9]+=0\(\K[^)]* 

demo)或捕獲組基於模式:

^\*(?:Field[0-9]+=0\([^)]*\),){3}Field[0-9]+=0\(([^)]*) 

參見regex demo

詳細

  • ^ - 串
  • \*的開始 - 一個*
  • (?:Field[0-9]+=0\([^)]*\),){3} - 的3序列: - 一個Field
  • [0-9]+ -
    • Field 1個或多個數字
    • =0\( - 一個=0( substring
    • [^)]* - 比)
    • \),其他任何0+字符 - 一個),
  • Field[0-9]+=0\( - 一個Field subtring隨後與1+數字,然後=0(
  • ([^)]*) - 第1組:0+任何其它字符比)