2017-10-17 99 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+任何其它字符比)