Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 用于将字符串拆分为项目的正则表达式_.net_Regex_Split - Fatal编程技术网

.net 用于将字符串拆分为项目的正则表达式

.net 用于将字符串拆分为项目的正则表达式,.net,regex,split,.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 (i

我有一个文本的形式

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


有什么建议吗?

看起来这能满足你的需求

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

我在上进行了测试,似乎得到了正确的格式。

谢谢,我尝试了您的示例,但一开始还没有成功。后来发现“单行”正则表达式选项导致它无法工作。删除“单行”选项解决了这个问题。谢谢你链接到在线正则表达式测试仪1+@CheGueVerra-没问题!我希望在接下来的几天内发布一个新版本,因为它呈现HTML/XML匹配的方式存在一个“bug”。