Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Regex 正则表达式-提取除方括号及其内容外的所有文本_Regex_Parsing_Text_Changelog - Fatal编程技术网

Regex 正则表达式-提取除方括号及其内容外的所有文本

Regex 正则表达式-提取除方括号及其内容外的所有文本,regex,parsing,text,changelog,Regex,Parsing,Text,Changelog,我有一个变更日志,其版本号在方括号中,如下所示: .*(\[.*?\]).* #[0.3.0]-2016-12-13 -修复这是一个示例修复 -功能部件示例功能部件 我只想提取版本号,这样我就剩下了: [未发布] [0.3.0] [0.2.4] [0.2.3] 理想情况下,我只想提取方括号中不是“未发布”的第一个值,因此我得到了最新版本号0.3.0,尽管我不确定这在正则表达式中是否可行 有人能帮忙吗?谢谢:)您可以像这样使用正则表达式: .*(\[.*?\]).* 使用替换字符串:\1 顺便

我有一个变更日志,其版本号在方括号中,如下所示:

.*(\[.*?\]).*
#[0.3.0]-2016-12-13
-修复这是一个示例修复
-功能部件示例功能部件

我只想提取版本号,这样我就剩下了:

[未发布]
[0.3.0]
[0.2.4]
[0.2.3]

理想情况下,我只想提取方括号中不是“未发布”的第一个值,因此我得到了最新版本号0.3.0,尽管我不确定这在正则表达式中是否可行


有人能帮忙吗?谢谢:)

您可以像这样使用正则表达式:

.*(\[.*?\]).*
使用替换字符串:
\1

顺便说一句,如果要删除所有其他文本,则可以使用:

.*(\[.*?\]).*|*

更新:如果您想在版本列表中转换变更日志,我可以提出以下正则表达式:

.*(\[.*?\])[\s\S]*?(^$|\z)

编辑(最初误读):

替换

[\s\S]*?(\[[\d.]+])[\s\S]*


.

您使用的是什么工具/语言?到目前为止您尝试了什么,您的尝试不符合您的需要吗?
(\[.*?\])
试试这个。我很困惑-您的标题是“全部删除…”,但您的问题是“仅提取…”。移除和提取是两件不同的事情。是哪一个?谢谢@ClasG我已经更新了我的标题:)
[^[\r\n]+(?:\r[^[\r\n]+)*\r?(\[^]]*\])
应该是你上一个正则表达式的性能改进。
[^[\r\n]+\[^]*\])
之前的一个。@SebastianProske,很高兴知道。谢谢你的评论。