正则表达式匹配分隔符之间的文本 [英] RegEx match text in between delimiters
问题描述
我需要一个正则表达式来提取分隔符内的文本,但我是在提取分隔符 [DATA n] 和 [END DATA] 内的值时遇到问题
I need a regex that extract text inside a delimiter but I'm having problem extracting the value inside the delimiter [DATA n] and [END DATA]
这是我的正则表达式
(?<=\[DATA\s+\d+\]).*(?=\[END DATA\])
这是我想要匹配的示例数据
Here's example data I want to match
这里有一些文字
[DATA 1]
data one
some more data
[END DATA]
[DATA 2]
data two
more data
data
[END DATA]
[DATA n]
more data
data
[END DATA]
推荐答案
当您真的不需要它们时,您似乎正在使用正则表达式功能,例如后视和前瞻.试试:
You appear to be using regular expressions features like lookbehind and lookahead when you don't really need them. Try:
\[DATA\s+\d+\](.*?)\[END DATA\]
这个正则表达式中只有一个捕获组,(.*?)
.使用后,您要查找的结果应该在捕获组 1 中.
There's only one capture group in this regular expression, (.*?)
. After using this, the result you're looking for should be in capture group 1.
另请注意,我使用了非贪婪的 .*?
匹配,该匹配将一直匹配到 [END DATA]<的 first 以下实例/代码>.如果没有这个,如果你只使用
.*
,你将捕获到 last [END DATA]
之前的所有内容.
Note also that I've used the non-greedy .*?
match that will match up until the first following instance of [END DATA]
. Without this, if you use just .*
, you'll capture everything up to the last [END DATA]
.
这篇关于正则表达式匹配分隔符之间的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!