正则表达式,匹配出现的文本

Regular Expression, Match ccurrenced text

我有这个字符串:

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

我需要存储 FieldN 的第 n 个值,所以我尝试了这个: (?<=Field[0-9]=0){4}?.*?(?=,)

这给我 (1936-S) 当我输入 N=4 时,我期望 19.01.17

你能帮帮我吗?

您可以使用

^\*(?: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 - Field 子串
    • [0-9]+ - 1 个或多个数字
    • =0\( - =0( 子串
    • [^)]* - )
    • 以外的任何 0+ 个字符
    • \), - ), 子串
  • Field[0-9]+=0\( - Field 子字符串后跟 1+ 个数字,然后是 =0( 子字符串
  • ([^)]*) - 第 1 组:除 ).
  • 之外的任何 0+ 个字符