我正在尝试构建一个可以很好地提取字符串特定部分的正则表达式。 我可以收到如下所示的字符串:
- UserA Pending Merge hotfix/taskA to do
- UserB 等待合并功能/taskC_expansion 完成
- UserC 等待合并
- 待处理的 UserD 合并修补程序
Pending Merge 后面的字符串基本上是一个分支名称。
我如何在 Pending Merge 单词后提取分支名称,以便它也适用于字符串不是/而只是“hotfix”的情况?
我可以处理在 Pending Merge 之后没有分支名称的情况,但如果所有的正则表达式都存在,那就太好了。
我试过:
[^pending merge].(\w*) 第一个词与“to”一起匹配。
pending merge(.\w+\W+\w+) 但在“pending merge hotfix to do”的情况下,它匹配“hotfix to”
最佳答案
你可以使用
/pending merge\s*(.*?)\s*(?:to do|done)/i
参见 regex demo .
详情
pending merge
- 文字子串\s*
- 0+ 个空格(.*?)
- 捕获第 1 组:除换行符以外的任何 0+ 个字符,尽可能少\s*
- 0+ 个空格(?:to do|done)
-to do
或done
。
JS 演示:
var strs = ['UserA Pending Merge hotfix/taskA to do',
'UserB Pending Merge feature/taskC_expansion done',
'UserC Pending Merge to do',
'UserD Pending Merge hotfix to do'];
var regex = /pending merge\s*(.*?)\s*(?:to do|done)/i;
for (var s of strs) {
console.log(s);
var m = s.match(regex);
if (m) {
console.log("FOUND: ", m[1]);
}
}
关于javascript - 仅提取特定单词后的 <string>/<string> 或 <string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55893685/