gpt4 book ai didi

正则表达式匹配条件匹配后的所有内容

转载 作者:行者123 更新时间:2023-12-04 03:36:54 25 4
gpt4 key购买 nike

我希望匹配项目列表中零个或多个之前(和之后)的所有内容。这是我目前正在使用的:(?<=\))(.*)(?=(or|,|\())

在这种情况下,我想匹配右括号后的所有内容 )以及 or 之前的所有内容,) .这工作正常(可能不是最佳的),但是,如果没有 3 个项目匹配,则没有匹配项。

例如句子2 cups (500 ml) mushroom, or vegetable broth匹配 mushroom,然而,2 cups (500 ml) mushroom不匹配任何内容。

基本上,我的目标是从成分+数量字符串中找到成分,上面的句子匹配mushroom和句子 salt匹配整个字符串 salt

这里有更多的例子:
1 thyme sprig应该匹配 thyme sprig
1 garlic clove, chopped应该匹配 garlic clove
1 cup (180 g) quinoa, rinsed and drained应该匹配 quinoa
2 tbsp (30 ml) olive oil, plus more for serving应该匹配 olive oil
Vegan Parmesan, to taste返回 Vegan Parmesan

前两个和后两个的区别很棘手,好像有一个右括号(如最后两个示例),成分应该在右括号之后。如果没有右括号(如前 2 个示例,则应采用数字后的所有内容。

最佳答案

你可以使用

(?:^[^)\n]*\)|\d)\s*\K.*?(?=or|[,(]|$)

如果您的正则表达式风格不支持 \K,请使用捕获组:

(?:^[^)\n]*\)|\d)\s*(.*?)(?=or|[,(]|$)

参见 regex demo .获取第 1 组值。

详细信息:

  • (?:^[^)\n]*\)|\d) - 字符串开头,然后是换行符或 以外的零个或多个字符) char 然后是 ) char,或者一个数字(如果行上没有 ))
  • \s* - 零个或多个空格
  • (.*?) - 第 1 组:除换行符以外的任何 0+ 个字符,尽可能少
  • (?=or|[,(]|$) - 直到第一次出现 or, ,, (,或字符串结尾。

关于正则表达式匹配条件匹配后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66715613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com