【发布时间】:2020-03-27 17:37:37
【问题描述】:
我正在使用 Google 表格的 REGEXEXTRACT 函数。 每行的数据是一个字符串,如下所示:
2020 年 2 月 15 日 - 乔·塞芬
2020 年 2 月 18 日 - Candy Kane - Toot Suites - Some Street 123
2020 02 19 - Badonk Edonk - 在船上
我需要为每一行捕获以下组:
(2020 年 2 月 15 日)(乔·塞芬)
(2020 02 18)(Candy Kane)(Toot Suites)(123 Some Street)
(2020 02 19)(Badonk Edonk)(在船上)
分隔符始终为“-”(空格连字符空格),但并非每一行都有相同数量的分隔符。
拆分字符串看起来应该很简单,但我的正则表达式技能充其量只是初级;我已经为此努力了大约一个小时(在 regex101.com 的帮助下),但未能设计出产生所需输出的表达式。
我正在尝试对此的变化:
^(?>[0-9 ]* - )(.*)( - .*)?
但我的输出总是捕获前两组,而不是其余组:
(2020 年 2 月 15 日)(乔·塞芬)
(2020 02 18)(Candy Kane)(Toot Suites)(123 Some Street)
(2020 02 19)(Badonk Edonk)(在船上)
或者它将日期之后的所有内容作为一个组捕获:
(2020 年 2 月 15 日)(-乔·塞芬)
(2020 年 2 月 18 日)( - Candy Kane - 图特套房 - Some Street 123 号)
(2020 02 19)(-Badonk Edonk-在船上)
我愿意接受你的建议
【问题讨论】:
-
我已经编辑了原帖。
-
如果您需要获得 2、3 或 4 个组,请尝试
^(.*?) - (.*?)(?: - (.*?))?(?: - (.*?))?$。见this regex demo。 -
做到了!我现在正在剖析你在 regex101 中的表达 :) 非常感谢!
标签: regex string split delimiter