【问题标题】:Regex up to a special character and group of letters正则表达式最多一个特殊字符和一组字母
【发布时间】:2017-08-04 19:54:15
【问题描述】:

使用正则表达式,我正在尝试使用单个正则表达式命令从每个字符串中取回以下内容(星号表示我要提取的内容):

FO4H56FD-BTU (Follow Home 56): PLTD8

\***********

FO4H56FD-SYH-BI (Follow Home 56 SYH): PLTD8

\***********

FO4H52FD-SZH-AG4R-BI (Follow Home 52 SAH): QQTD8

\****************

FO4H58FD-SGH: (Follow Home 58 TGT): PLTS8

\***********

由于某种原因,我遇到了很多困难。我一直在使用各种方法,目前 =REGEXEXTRACT(A43,"(FO.+)\-BI") 不起作用。我目前也没有在寻找:。我使用| 处理多个似乎没有奏效的规则。

【问题讨论】:

  • 能否请您检查并确认匹配的最终分隔符是否可以是: 或空格?
  • 试试"^(.*?)(?:-BI)?(?:[ :]|$)"
  • 试试FO[A-Z0-9-]+(-BI)?
  • 是的,空格或 : 将是最后的分隔符。

标签: regex text google-sheets extraction


【解决方案1】:

你可以使用

=REGEXEXTRACT(A43,"^(.*?)(?:-BI)?(?:[ :]|$)")

详情

  • ^ - 字符串开头
  • (.*?) - 尽可能少地捕获匹配任何 0+ 字符的组 #1
  • (?:-BI)? - 一个可选的非捕获组,匹配 1 次或 0 次出现的 -BI 子字符串
  • (?:[ :]|$) - 空格、: 或字符串结尾

【讨论】:

  • 太棒了,非常感谢。数小时的挫败感在几秒钟内解决!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多