正则表达式查找具有起始词和结束词的最短字符串

2024-02-17

我想找到一种方法来编写正则表达式来搜索以指定的开始子字符串开头并以另一个指定的结束字符串结尾但总长度最小的字符串的出现次数。例如,如果我的起始字符串是bar我的结束字符串是foo当搜索字符串时barbazbarbazfoobazfoo那么我想让它返回barbazfoo.

我知道如果它只是一端或另一端的单个字符,例如用我可以搜索的字符替换上面的单词,该怎么做a[^a].*?b为了找到字符串axb在字符串内axaxbxb,但由于我正在寻找单词而不是字符,所以我不能简单地说我不想要任何特定的字母,因为该字母允许出现在中间。

对于上下文,我试图从服务器读取日志,并希望查找例如哪些用户遇到了特定错误,但在用户名出现的位置和有关异常的信息发生的位置之间存在其他信息。因此,我并不是在寻找一个利用以下事实的解决方案:foo在上面的例子中只出现了字母f and o.


附加示例:从第一段开始这个关于前向和后向的正则表达式教程 https://www.regular-expressions.info/lookaround.html

正文如下:

Lookahead and lookbehind, collectively called "lookaround", are zero-length assertions just like the start and end of line, and start and end of word anchors explained earlier in this tutorial. The difference is that lookaround actually matches characters, but then gives up the match, returning only the result: match or no match. That is why they are called "assertions". They do not consume characters in the string, but only assert whether a match is possible or not. Lookaround allows you to create regular expressions that are impossible to create without them, or that would get very longwinded without them.

如果我的起始词是lookaround我的结束语是match然后我希望找到子字符串lookaround actually match,注意到目标单词可能会多次出现,并且其间可能存在与目标单词共享字符的未知数量的单词和字符。以上面的例子为例lookaround[^lookaround]*?match返回时未找到匹配项,因为语法似乎试图避免每个字母l,o,k,...单独。我想看看如何让它看起来避免子字符串而不是单个字母。


你必须使用 Tempered Greedy Token:

首先(有字边界) https://regex101.com/r/TKg0Xk/1

\blookaround\b(?:(?!\b(?:match|lookaround)\b).)*\bmatch\b

matches lookaround actually matches characters, but then gives up the match

第二个(无) https://regex101.com/r/TKg0Xk/2

lookaround(?:(?!(?:match|lookaround)).)*match

matches lookaround actually match

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式查找具有起始词和结束词的最短字符串 的相关文章

  • JavaScript 正则表达式否定精确的字符串匹配

    HTML JavaScript 中有没有办法编写正则表达式来否定精确的字符串匹配 我想确保输入不等于 foo 仅有的 foo 验证必须失败 但是 fooo 必须被允许 换句话说 我正在寻找这个正则表达式的否定
  • 用于验证 JSON 的正则表达式

    我正在寻找一个允许我验证 json 的正则表达式 我对正则表达式非常陌生 我知道用正则表达式解析很糟糕 但它可以用来验证吗 是的 可以进行完整的正则表达式验证 大多数现代正则表达式实现都允许递归正则表达式 它可以验证完整的 JSON 序列化
  • 如何使用 re2 正则表达式否定字符串模式?

    我正在使用谷歌re2 https github com google re2 wiki Syntax用于查询目的的正则表达式普罗米修斯 https prometheus io docs prometheus latest querying
  • 正则表达式删除带有数字的单词

    我想删除产品名称中带有数字 参考 或小单词 2 个或更少字符 的单词 但我找不到好的正则表达式 一些例子 链式防回弹ECS 2035 应成为 链式防反弹 指南 35 厘米俄勒冈 Intenz 应该成为 俄勒冈州 Intenz 指南 Tron
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 通过一个正则表达式以任意顺序匹配多个单词

    如标题中所述 我想要正则表达式 它将根据我的 查询 按顺序给出结果 line VERSION OTHER POWER LOW FREQ OFF MAXTUN BLER 示例1 re findall r FREQ VERSION line r
  • 自动用 if/else 替换条件运算符?

    特定的 JS 解析器 不在我的控制范围内 不理解嵌套条件运算符语法 如下所示 return num 1 condition condition something something 因此 我想使用 if else 块替换文件中的所有条件运
  • preg_match_all JS 等效吗?

    Javascript 中是否有与 PHP 的 preg match all 等效的函数 如果没有 将正则表达式的所有匹配项放入数组的最佳方法是什么 我愿意使用任何 JS 库来让它变得更容易 您可以使用match使用全局修饰符 gt gt g
  • 在 Java/GWT 中解析用户时间输入

    解析用户在 GWT 中的文本字段中键入的时间的最佳方法是什么 默认时间格式要求用户完全按照区域设置指定的时间格式输入时间 我想要更加灵活 因为用户可以通过多种不同的方式输入时间 例如 8 8p 8pm 8 15pm 13 15 1315 1
  • 找出段落中出现的单词

    sentence Alice was not a bit hurt and she jumped up on to her feet in a moment words Alice jumped played 我可以使用filterpyth
  • 如何防止用户生成的 Sql 查询上的 Sql 注入

    我有一个项目 私有的 ASP net 网站 受 https 密码保护 其中要求之一是用户能够输入直接查询数据库的 Sql 查询 我需要能够允许这些查询 同时防止它们对数据库本身造成损坏 以及访问或更新它们不应该访问 更新的数据 我制定了以下
  • sed - 删除行尾的句点

    我正在尝试删除文本文件中行尾的句点 有些行末尾有句点 有些则没有 cat textfile sometexthere 123 22 no period moretext with period lt remove this period n
  • 在 Shell 中提取匹配模式后的字符串

    如何提取 Shell 脚本中匹配模式后面的任何字符串 我知道 Perl 脚本中的此功能 但不知道 Shell 脚本中的功能 以下是示例 subject 01 这是一个示例主题 可能会有所不同 我必须提取 Subject 01 后面的任何字符
  • 正则表达式:括号表达式中的双反斜杠

    以下表达式中的双反斜杠匹配什么 它是一个过滤器吗 and 转义反斜杠 或 and 未转义 或 and 逃避问号 这是正则表达式的链接以及一些示例测试字符串 如在Rubular http rubular com r Jrw1G4YLtT Th
  • 正则表达式获取模式的最后一次出现

    我有一个字符串 我需要选择最后一次出现的模式 该字符串是 1302638400000 0 0 1302724800000 0 610 64999999999998 1302811200000 0 2266 6500000000001 130
  • 什么正则表达式永远无法匹配?

    Merged https meta stackexchange com questions 158066 what is a merged question with 永远不会与任何内容匹配的正则表达式 questions 1723182
  • 使用正则表达式查找除一个字符串之外的所有字符串[重复]

    这个问题在这里已经有答案了 我想匹配除字符串之外的所有字符串 ABC 例子 A gt Match F gt Match AABC gt Match ABCC gt Match CBA gt Match ABC gt No match 我尝试
  • JavaScript:搜索字符串时的 indexOf 与 Match? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用之间是否存在明显的性能差异 str indexOf src and str match src 我个人比较喜欢match 和正则表达式 但同
  • 正则表达式拒绝连续字符

    我对正则表达式仍然很陌生 基本上我需要做的是创建一个接受数字和字母但不允许输入连续字符的规则 例如 abcd gt 好的 abbcd gt 坏的 我已经完成了大部分工作 但我无法弄清楚的部分是如何禁止连续字符 到目前为止我的代码 A Za
  • 正则表达式提取大括号之间的文本

    我正在尝试提取 PHP 中花括号之间的文本 例如 欢迎 user first name 使用 site 版本 1 5 您的用户名 是 user username 您目前的声誉是 user reputation name 我用过 在某些情况下

随机推荐

  • 使用python日志记录模块将消息发送到一个文件并将错误发送到另一个文件[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我发现了一些类似的示例将消息记录到多个文件 但没有什么完全符合我想要的 我正在使用日志记录模块 并将所有信息消息记录到控制台和文件中 我稍后
  • 登录一次并在首次登录后每次应用程序启动时跳过登录布局

    我正在编写一个 android 应用程序 我想使用 facebook sdk 3 集成 facebook 登录 我已经尝试了很多教程 但现在成功了 任何人都可以给我一个 完整的指南 通过它我可以实现以下目标 登录活动 如果用户从此活动登录一
  • Spring boot 2.0.0.M6 OAuth2 Web 应用程序客户端。不再有@EnableOauth2Sso;如何更换?

    我已经在 Spring 5 和 Spring boot 2 0 0 M3 中构建了身份验证服务和 Web 应用程序 我正在尝试将其移植到Spring boot 2 0 0 M6 now 我注意到 EnableOauth2Sso不再可用spr
  • 完成 UI Activity 分配 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个 Android 编程 UI 实验室 我正在尝试完成它 我想我很近 但又很远 我正在处理四项活动 但只需要完成其中三项 这是我所拥有
  • titan 1.0.0 中的 gremlin 并未在 Windows 上开箱即用

    我正在关注http s3 thinkaurelius com docs titan 1 0 0 getting started html http s3 thinkaurelius com docs titan 1 0 0 getting
  • SNS 的自我限制消息长时间未发送会怎样?

    假设我有一个 SNS 我使用该属性进行自我限制maxReceivesPerSecond 假设我们的生产率非常高 但由于节流 消耗非常慢 这可能会导致某些消息在 SNS 中停留很长时间 我看到了这个所以答案 https stackoverfl
  • 如何针对特定来电提供定制振动

    该程序的功能如下 用户有一个电话号码列表 只有当没有其他系统范围的应用程序提供振动 例如在静音模式下 时 手机才会在来电时振动 我知道这在某种程度上违反了规则 因为应用程序应该尊重用户的设置 但应用程序仅限于某些有此需求的用户 我尝试了两种
  • 返回此意外输出的 CUDA 代码发生了什么情况?

    终于让动态并行性启动并运行后 我现在正在尝试用它来实现我的模型 我花了一段时间才发现一些奇怪的输出是由于需要使用 cudaDeviceSynchronize 让父内核等待子内核完成而导致的 我定义为 arrAdd 的设备函数似乎有问题 下面
  • 如何更改删除+添加以在git历史记录中移动

    我有一个 git 存储库 它是一些旧的 svn 存储库的混合体 当我混合所有内容时 我没有意识到要执行 git mv 而不是仅仅移动文件 所以现在大多数文件的 svn 历史记录都丢失了 有办法解决这个问题吗 旧的结构是这样的 svn1 ap
  • 如何从 Linux 访问 Team Foundation Server (TFS)

    如果这个问题不是特定于 VCS 的 因此程序员比系统管理员更了解这种问题 那么我会问有关服务器故障或超级用户的问题 也就是说 如何从 Linux 访问 TFS 是否有一个可以在 Linux 上运行的客户端应用程序 或者一个可以在 Windo
  • SQL Server 的数据生成器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 过滤 Pandas 数据框聚合

    我有一个 pandas 数据框 我对其进行分组 然后执行聚合计算以获得平均值 grouped df groupby year month company means grouped agg size mean 这给了我一个数据框 但我似乎无
  • Angular/Typescript - 该表达式不可构造。类型“MoveDataClass”没有构造签名

    我正在使用 3 种方法创建一个类来创建该类的新实例 但是当我尝试这样做时 会出现以下错误 Angular Typescript 该表达式不可构造 类型 MoveDataClass 没有构造签名 我做错了什么 班上 export class
  • Emacs 重新排列分割窗格

    如果我在 终端 Emacs 中工作并且使用水平分割在屏幕上有 2 个缓冲区
  • 属性表模式与将所有属性存储在 json 列中[重复]

    这个问题在这里已经有答案了 我想要一些关于模型可以在通过关系访问的属性表中拥有的所有属性 使用 Laravel 关系 与将所有属性 设置存储在同一个表中但在 json 列中的反馈 目前 我的应用程序有一个名为 设置 的属性表 它本质上也是多
  • Django“xxxxxx 对象”在管理操作侧边栏中显示自定义

    我想更改管理员最近更改侧边栏显示添加的 对象 名称的默认行为 参考下图 我想更改它们在管理中的命名方式 理想情况下 我希望能够将其从 MyModelName 对象 更改为 策略 对象示例中的 策略 策略的 策略名称 字段的值 我在想 uni
  • htaccess url 重写,url 中包含多个变量

    我想在我的 htaccess 文件上制定一些 url 重写规则 以便此链接 http myseite com index php var1 value1 var2 value2会变成 http myseite com var1 value2
  • 在 Webpack Visual Studio 2017 .NET Core 2.2 捆绑的 Chrome 中调试 Typescript

    有几个问题 但大多数答案似乎是 如果你有 VS 2017 现在应该是默认的 我的调试器无法正常工作 因此我想提供我的具体案例以获得一些帮助 我也是 Typescript 和 Webpack 的新手 可以提供一些背景信息 项目层次结构 www
  • 如何使用 SASS 扩展/修改(自定义)Bootstrap

    我想创建一个基于 Bootstrap 的网站主题 我想扩展 Bootstrap 的默认组件并更改其中的一些组件 为此 我需要access到 Bootstrap 定义的 SASS 变量 这样我就可以覆盖它们 我想过从 GitHub 克隆 Bo
  • 正则表达式查找具有起始词和结束词的最短字符串

    我想找到一种方法来编写正则表达式来搜索以指定的开始子字符串开头并以另一个指定的结束字符串结尾但总长度最小的字符串的出现次数 例如 如果我的起始字符串是bar我的结束字符串是foo当搜索字符串时barbazbarbazfoobazfoo那么我