javascript - 根据模式从字符串中捕获值

标签 javascript python regex go

<分区>

我正在寻找解决以下问题的方法。它使用提供的模式从字符串中捕获所有 * 值。

function capture(pattern, string) {
}

例子:

输入

  • Pattern 敏捷的棕色 * 跳过懒惰的 *

  • String 敏捷的棕色狐狸跳过懒惰的狗

输出[狐狸,狗]

是否可以使用正则表达式解决它?

最佳答案

诀窍是将模式转换为正则表达式,从给定字符串中捕获预期值:

func capture(pat, str string) []string {
    // Capture all sequences of non-whitespace characters between word boundaries.
    re := strings.Replace(pat, "*", `(\b\S+\b)`, -1)
    groups := regexp.MustCompile(re).FindAllStringSubmatch(str, -1)
    if groups == nil {
        return []string{}
    }
    return groups[0][1:]
}

func main() {
    pat := "The quick brown * jumps over the lazy *"
    str := "The quick brown fox jumps over the lazy dog"

    fmt.Printf("OK: %s\n", capture(pat, str))
    // OK: [fox dog]
}

关于javascript - 根据模式从字符串中捕获值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985855/

相关文章:

Javascript Canvas 图像 onclick 不工作

javascript通过正则表达式提取日期

python - 使用 minidom 进行 XHTML 解析

regex - 通过bash将一个文件夹的某些文件分类到另一个文件中

regex - 是否可以从 NiFi 中的 CSV 文件标题名称中删除空格?

javascript - jquery:如何将事件处理程序添加到动态添加的元素而不再次将其添加到现有元素

javascript - 根据下拉菜单中的选择显示/隐藏表单域

javascript - 为什么 .size() 不能按我想象的方式工作?

python - 如何在 Python 中将 xaxis 网格放置在频谱图上?

python - 添加两个带有 2D 掩码的 3D numpy 数组