正则表达式匹配分隔符之间的文本 [英] RegEx match text in between delimiters

查看:45
本文介绍了正则表达式匹配分隔符之间的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一个正则表达式来提取分隔符内的文本,但我是在提取分隔符 [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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆