Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 获取一组分隔符之间的文本_Regex - Fatal编程技术网

Regex 获取一组分隔符之间的文本

Regex 获取一组分隔符之间的文本,regex,Regex,我有一个带有四个定界符的文本字符串ST:SI:T:和I:,后跟一系列数字和数字。我需要将分隔符作为一个名为group的组抓取,将数字和数字作为code抓取 ST:12YEOR48000FCT:24YEOR48000FCSI:12YEOR13000FCI:12YEOR13000FCT:12YEOR51200FCI:12YEOR14500FCST:12YEOR48000FCT:24YEOR48000FCSI:12YEOR13000FCI:12YEOR13000FCT:12ACTYEI:12ACTYE

我有一个带有四个定界符的文本字符串
ST:
SI:
T:
I:
,后跟一系列数字和数字。我需要将分隔符作为一个名为
group
的组抓取,将数字和数字作为
code
抓取

ST:12YEOR48000FCT:24YEOR48000FCSI:12YEOR13000FCI:12YEOR13000FCT:12YEOR51200FCI:12YEOR14500FCST:12YEOR48000FCT:24YEOR48000FCSI:12YEOR13000FCI:12YEOR13000FCT:12ACTYEI:12ACTYET:32000ACTFCI:13300ACTFC
结果应该是

GROUP CODE
ST:   12YEOR48000FC
T:    24YEOR48000FC
SI:   12YEOR13000F
CI:   12YEOR13000F
CT:   12YEOR51200F
CI:   12YEOR14500FC
ST:   12YEOR48000F
CT:   24YEOR48000FC
SI:   12YEOR13000F
CI:   12YEOR13000F
CT:   12ACTYE
I:    12ACTYE
T:    32000ACTFC
I:    13300ACTFC

(?'group'ST:| SI:| T:| I:)(?'code.*?)(?您正在为您的
code
组使用正向查找,这将无法实现您想要的功能


但是,您走对了!删除
请添加编程语言。@SportsRacer谈到优化,您可以进一步收缩它,您将获得
(?S?[TI]:)(?
*)(?=S?[TI]:|$)
,请参阅。
(?'group'ST:|SI:|T:|I:)(?'code'.*?)(?=ST:|SI:|T:|I:|$)
(?'group'(?:ST|SI|T|I):)(?'code'.*?)(?=(?:ST|SI|T|I):|$)