2

我的文本格式为

[1/12/2008 2:32:11 p.m. - name]
line 1
[1/12/2008 2:36:00 p.m. - name] - PRIVATE
line 2 [some text] sd
[1/12/2008 2:36:00 p.m. - name]
line 3

我想将其拆分为项目,以便我可以访问每个项目的时间、名称和文本,

e.g.:
(item 1)
  1: 1/12/2008 2:32:11 p.m.
  2: name
  3: line 1
(item 2)
  1: 1/12/2008 2:36:00 p.m.
  2: name
  3:  - PRIVATE
    line 2 [some text] sd
(item 3)
  1: 1/12/2008 2:36:00 p.m.
  2: name
  3: line 3

我试图想出一个单一的正则表达式模式来实现这一点,但没有运气:

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?:\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\])

上面的这个模式只返回第一项。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?!\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\])

上面的模式返回所有项目,但只返回文本的第一个字符(第 3 组)

有什么建议么?

4

1 回答 1

4

看起来这可以让你得到你想要的。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+.*?)

我在我的 RegEx 测试仪上对其进行了测试,它似乎得到了正确的格式。

于 2008-12-03T01:37:31.417 回答