javascript - 仅提取特定单词后的 <string>/<string> 或 <string>

标签 javascript regex

我正在尝试构建一个可以很好地提取字符串特定部分的正则表达式。 我可以收到如下所示的字符串:

  • 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 dodone

enter image description here

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/

相关文章:

javascript - jQuery 获取表单点击了哪个按钮?

javascript - 更改日期选择器上的日期格式

java - 关注 Java 中的正则表达式和模式编译

javascript - 如何在 designmode=on 中保护 HTML 元素

javascript - 如何在 Firefox 插件开发中使用模块

java - 替换字符串中的数字

JavaScript 正则表达式在 Firefox 中失败

javascript - 如何将空格填充的网址变成链接

Javascript 加载新表单

JavaScript 正则表达式 - 空参数使正则表达式匹配