正则表达式提取多字符分隔符

时间:2017-03-21 14:21:03

标签: 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 *但需要获得正确的群组。

1 个答案:

答案 0 :(得分:1)

如果在***第三次出现后需要***包围的子字符串,则此正则表达式为:

(?:.*?\*{3}\s*){3}(.*?)\s*\*{3}

将使用所需数据填充第一个捕获组。

说明:

  • .*? - 为了避免吞咽***
  • 而与懒惰相匹配
  • \*{3} - 字面意思*三次
  • \s - 可选地后跟空格
  • (?:.*?\*{3}\s*) - 以上所有内容连接在一起
  • (?:.*?\*{3}\s*){3} - ...重复三次
  • (.*?) - 任何内容(懒得再次停在***分隔符上) - 在群组中捕获
  • \s* - 可选地后跟空格
  • \*{3} - 以及结算分隔符

演示:https://regex101.com/r/cS2rLm/1