- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个正则表达式,以从我正在构建的项目中保留的历史文件中提取文本 block 。目前,我计划在我的文本编辑器(textmate 或 sublimetext 2)中手动执行此提取,但最终我将使用 python 或 php 将其构建为脚本化过程(尚未决定)。
我的历史文件中的所有历史条目都具有以下格式:
YYYY-MM-DD - Chris -- Version: X.X.X
====================================
- Lorem ipsum dolor sit amet, vim id libris epicuri
- Et eos veri quodsi appetere, an qui saepe malorum eloquentiam.
...
--
其中 X 是完成工作的版本号。
我正在尝试提取从版本号到最后的双破折号分隔符(表示文本 block 的结尾)的所有内容。
我首先创建正则表达式语句来选择有效的节标题:
(^[\d]{4}-[\d]{2}-[\d]{2}\s-\s[\w]+\s--\sVersion:\s)[\d\.]+$
但是当我尝试将括号内的模式转换为后面的外观时,它失败了:
(?<=^[\d]{4}-[\d]{2}-[\d]{2}\s-\s[\w]+\s--\sVersion:\s)[\d\.]+$
我一直在四处寻找,到目前为止,这种回顾格式似乎是正确的。我似乎无法弄清楚我错过了什么。有什么想法吗?
最佳答案
如Joey声明,php 或 python 中没有任意长度的lookbehind。但 PHP 有一个解决方法! \K
转义序列。
来自docs :
The escape sequence \K causes any previously matched characters not to be included in the final matched sequence. For example, the pattern:
foo\Kbar
matches "foobar", but reports that it has matched "bar". This feature is similar to a lookbehind assertion (described below). However, in this case, the part of the subject before the real match does not have to be of fixed length, as lookbehind assertions do.
删除一些多余的括号[]
后,你的表达式将看起来像
(?m)^\d{4}-\d{2}-\d{2}\s-\s\w+\s--\sVersion:\s\K[\d.]+$
注释:
(?m)
:是内联 regex modifier .
:[.]
将匹配点而不是任何字符\s*
或 \s+
\w+
也会匹配下划线 _
,因此要排除它,您可以使用 [^\W_]+
关于php - 正则表达式回顾问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179465/
这有点相关:Regular Expression - Formatting text in a block - IM而是一个不同的问题。 根据以下条件寻找 - 的换行文本: 条件: token 可以在
使用 Ruby,我想找到一个正确识别句子边界的正则表达式,我将其定义为以 [.!?] 结尾的任何字符串,除非这些标点符号存在于引号内,如 My friend said "John isn't here
有没有办法在 VBA 正则表达式中进行负面和正面回顾? 如果字符串以“A”开头,我想不匹配,所以我目前在模式的开头执行 ^A,然后删除 match(0) 的第一个字符。显然不是最好的方法! 我正在使用
我正在尝试使用模式替换一些字符串,但我不知道如何检查字符串之前是否有点。.some 应该是负数,some 应该是正数 var a = "some.string is replaced and .so
Random rand = new Random(); Observable random1 = Observable.just(rand.nextInt()); Observable random2
我希望有人可以检查我的正则表达式,以确保它正在执行我希望它执行的操作。 所以这就是我所追求的: 在单词边界内搜索单词 - 因此它可以是单独的单词,也可以是另一个单词中的单词 获取前面的 30 个字符(
我创建了以下触发器来跟踪 postgres 表上的所有更改。 DROP TRIGGER tr_request_update_notify ON requests; CREATE OR REPLACE
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
这是我的代码: import com.google.gson.JsonElement; import com.rallydev.lookback.LookbackApi; import com.ral
我想创建类似 facebook lookback 的系统,但我不知道。 https://facebook.com/lookback/ 它通过一些带有一些效果的图片生成视频。 你有什么想法可以创造类似的
使用 meteor 1.5.2我安装了最新的 Lookback:meteor-seo 插件,但收到此错误 lookback_seo.js?hash=a658c0f8fd82680b329114c5e6
这里是 HelloGitHub 出品的年度盘点系列,本期我们将盘点 GitHub 在 2020 发生的大事件,回顾一下今年 GitHub 给我们带来了那些惊喜。故事的开始我们要回到一年前从 GitH
最近,我无法使用过去曾与我的帐户一起使用过的 Lookback API 的应用程序。查看控制台后,似乎在向服务器发出请求时出现错误 403。我有一些同事也尝试访问 API,但我们都收到了同样的错误。
gcc 4.4.4 c89 在使用结构体隐藏实现文件中的元素时,我总是这样做。 port.h头文件 struct port_tag; struct port_tag* open_ports(size_
我是一名优秀的程序员,十分优秀!