需要在 Google Sheet 中使用 REGEXEXTRACT() 在字符串之间提取字符串

Need to extract String in between strings using REGEXEXTRACT() in Google Sheet

我有一个像这样的字符串:"abcd abcd | abcde | Degree SP | xyz abcd | abcd ABC"

我需要使用正则表达式提取 "Degree SP"。我怎样才能做到这一点?这里的条件是:

我正在尝试 Google Sheet 公式 REGEXEXTRACT(<input string>, "[\|\s].+SR[\s\|]") 它returns" | abcde | Degree SP "。如何限制从最后一个 "|"?

中提取

使用您显示的示例,请尝试使用正则表达式。

^.*?\s+\S+\s+\|\s+\S+\s+\|\s+([^\|]*)\s+\|.*$

Online demo for above regex

OR 您想要捕获以 SP 结尾的 | 的第 2 次和第 3 次出现之间的值字符串然后尝试以下正则表达式:

^.*?\s+\S+\s+\|\s+\S+\s+\|\s+([^\|]*SP)\s+\|.*$

Online demo for above regex

说明: 为以上添加详细说明。

^.*?\s+\S+\s+  ##Matching from starting of value with a lazy match till 1st occurrence of spaces followed by 1 or more non-spaces followed by 1 or more spaces.
\|\s+\S+\s+\|  ##Matching |(literal) followed by spaces followed by 1 or more non-spaces followed by spaces with |(literal character) here.
\s+            ##Matching 1 or more spaces occurrences here.
([^\|]*)      ##Creating 1 and only capturing group which has everything till next occurrence of | to get Degree SP value mentioned by OP in samples.
\s+\|.*$       ##Matching 1 or spaces followed by | till last of value/line.

如果字符串 Degree SP 应该在管道和 space 之间:

\|\s([^\s|][^|]*SP)\s\|
  • \|\s 匹配 | 和一个 whitespace char
  • ( 捕获 组 1
    • [^\s|] 匹配 space 或 |
    • 以外的单个字符
    • [^|]*SP 匹配 | 以外的可选字符并匹配 SP
  • ) 关闭组 1
  • \s\| 匹配白色 space 字符和 |

Regex demo

如果只有Degree SP后的管道是必须的:

([^\s|][^|]*SP)\s*\|

Regex demo