正则表达式,匹配出现的文本
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\(([^)]*)
详情
^
- 字符串的开头
\*
- 一个 *
字符
(?:Field[0-9]+=0\([^)]*\),){3}
- 3 个序列:
Field
- Field
子串
[0-9]+
- 1 个或多个数字
=0\(
- =0(
子串
[^)]*
- )
以外的任何 0+ 个字符
\),
- ),
子串
Field[0-9]+=0\(
- Field
子字符串后跟 1+ 个数字,然后是 =0(
子字符串
([^)]*)
- 第 1 组:除 )
. 之外的任何 0+ 个字符
我有这个字符串:
*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\(([^)]*)
详情
^
- 字符串的开头\*
- 一个*
字符(?:Field[0-9]+=0\([^)]*\),){3}
- 3 个序列:Field
-Field
子串[0-9]+
- 1 个或多个数字=0\(
-=0(
子串[^)]*
-)
以外的任何 0+ 个字符
\),
-),
子串
Field[0-9]+=0\(
-Field
子字符串后跟 1+ 个数字,然后是=0(
子字符串([^)]*)
- 第 1 组:除)
. 之外的任何 0+ 个字符