正则表达式:在字符串中的两个标记之间拉出一个子字符串

Dan*_*Dan 45 regex parsing

我有一个以下格式的文件:

Data Data
Data
[Start]
Data I want
[End]
Data

我想使用正则表达式Data I want从标签[Start][End]标签之间抓取.谁能告诉我这是怎么做到的?

Kar*_*uin 63

\[start\](.*?)\[end\]
Run Code Online (Sandbox Code Playgroud)

Zhich将文本放在捕获中间.

  • 这仍然不会捕获具有换行符的字符串 (6认同)
  • 比接受的答案更好(更简单)...... :-) (2认同)
  • @Doug使用选项dotall.不是正则表达式的问题. (2认同)

Xen*_*Yan 23

\[start\]\s*(((?!\[start\]|\[end\]).)+)\s*\[end\]
Run Code Online (Sandbox Code Playgroud)

这应该有希望掉落[start][end]标记.

  • 前瞻可能效率较低,但我喜欢如果出现意外的"[start]"或"[end]",你是如何阻止它破坏的.考虑边缘情况并抢占它们总是好的. (2认同)

小智 5

$text ="Data Data Data start Data i want end Data";
($content) = $text =~ m/ start (.*) end /;
print $content;
Run Code Online (Sandbox Code Playgroud)

我有一段时间有类似的问题,我可以告诉你这个方法有效...