Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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,我需要提取以下单行字符串中显示的长数据格式: Fred,0 Dave,0 Rupert,0 Larry,1 Barry,0 Steve,1 RTE1832 : London***11.2.0.4.0***RE22/1***20170321075456***SS/D20 名称和名称的数量会发生变化,因此我希望使用***分隔符进行提取。谢谢你的帮助 编辑:已尝试\s*\*\*\*\s*,但需要获取正确的组。如果需要在第三次出现***之后包含一个子字符串,则此正则表达式: (?:.*?\*{3}\s

我需要提取以下单行字符串中显示的长数据格式:

Fred,0 Dave,0 Rupert,0 Larry,1 Barry,0 Steve,1 RTE1832 : London***11.2.0.4.0***RE22/1***20170321075456***SS/D20
名称和名称的数量会发生变化,因此我希望使用
***
分隔符进行提取。谢谢你的帮助


编辑:已尝试\s*\*\*\*\s*,但需要获取正确的组。

如果需要在第三次出现
***
之后包含一个子字符串,则此正则表达式:

(?:.*?\*{3}\s*){3}(.*?)\s*\*{3}
将用所需数据填充第一个捕获组

说明:

  • *?
    -不要懒洋洋地匹配任何东西,以免吞咽
    ***
  • \*{3}
    -字面意思是
    *
    三次
  • \s
    -可选后跟空格
  • (?:.*?\*{3}\s*)
    -以上所有内容都连接在一起
  • (?:.*{3}\s*){3}
    -。。。重复三次
  • (.*)
    -在组中捕获的任何内容(再次懒洋洋地停止在
    ***
    分隔符上)
  • \s*
    -可选后跟空格
  • \*{3}
    -和结束分隔符

演示:

您尝试了什么吗?请参见编辑。请详细说明您要提取输入字符串的哪一部分?您希望从数据样本中提取哪些字符串?我想提取20170321075456,因此您需要一个子字符串,该子字符串由第三次出现的
***
包围,不是吗?