正则表达式将字符串拆分为项目

时间:2008-12-03 01:14:56

标签: .net regex split

我的文字是

[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)

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

看起来这样可以得到你想要的东西。

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

我在my RegEx tester上对其进行了测试,看起来格式正确。

答案 1 :(得分:0)

不是一个答案,但有一个名为expresso的工具可以帮助你。

http://www.ultrapico.com/expresso.htm