当前位置: 首页 > 知识库问答 >
问题:

正则表达式以匹配可选组

元嘉木
2023-03-14

我试图写一个正则表达式来匹配三个组,在三个组中,我希望有一个组是可选的。

正则表达式:

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)\((\w*)\)*:\s(.*)$

它匹配以下内容:

AAAA-1235: fix(test): message 

但是,不是在下面。

AAAA-1235: fix: message 

如何修改正则表达式,使其匹配两个组。如果第一条消息是三个组。

  • 修复
  • 测试
  • 消息

如果是第二条消息,只有两组

    < li >修复 < li >消息

消息

共有1个答案

邓令
2023-03-14

您没有将组设置为可选,您只是将组末尾的 设置为可选。您需要在整个组周围加上 (),而不仅仅是括号内的部分。

此外,要使某些内容可选,请使用 *表示允许任意数量的重复,包括0。

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)(\(\w*\))?:\s(.*)$

演示

 类似资料:
  • 当所有组都是可选的时,我在提取组时遇到了问题。 上下文(如果您愿意,可以跳到结尾):这是在将字符串与一堆正则表达式进行最佳匹配并查看哪个表达式具有最多组匹配的上下文中。 例如,我可能有一个潜在的格式; 但我希望用户打错字,或者不包含空格或其他东西。 所以我可以用绳子测试一下 并希望获得组 一个 光盘 1-1 G 而且,对于测试字符串 我想得到   DE   克 下面是我的正则表达式,用于匹配以下可

  • 我正在尝试匹配时间格式。时间可以用可选的小时、分钟和毫秒写入。唯一需要的值是秒。所以所有这些时间都写得正确,应该匹配。 我的正则表达式看起来像这样: 我希望每组对应正确的值。因此,组1应始终返回小时,组2应始终返回分钟,等等……我在Regex101中尝试了这一点,但正如您在这些结果中看到的,当没有小时时,组1总是优于组2。它与时间<code>11:12 如何确保每组始终对应正确的时间段?我可以以某

  • 我们得到了一些这样的内容:

  • 获取给定的URI,如下所示: 如何在斜线之间匹配捕获组中的每个角色?这可以通过以下方法完成: 这给了我三个组,其中: 我遇到的麻烦是让一个捕获组可选。我认为这将工作,认为我可以使每组可选(匹配零或更多): 有没有一种方法,可以使用Regex或PHP选择性地匹配上述URI的、或?

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was