我在使用RE2正则表达式的google工作表中使用regexextract
我希望在字符“P”之前或字符“MC”之前的字符串中获取数字
这是我到目前为止( . ?\ d *) . ?MC如果我的文字像“FM.3 MC1”(在谷歌表中它就像这样= REGEXEXTRACT(A1,“( . ?\ d) *)?MC“)
这适用于在MC之前获取数字,我想像这样添加OR P( . ?\ d *) . ?MC | P.
如果我的文本是“FM.3 MC1”,则返回.3,如果我的文本是“FM.3 MC1 P2”或“FM.3 P1”,则返回空白,如果我的文本是“FM.3”,则返回#N / A.
另外,如果我的正则表达式是( . ?\ d *) . ?P | MC,那么......如果我的文本是“FM.3 P1”,则返回.3如果我的文本是“FM.3 MC P1”则为空白
我不确定这是否是正则表达式,或者谷歌表是否很奇怪 .
我正在寻找小费...谢谢
3 回答
你可以用
我用
\W
替换了.?
(=任意1或0个字符),因为我认为数字和字母之间只能有一个非单词字符 .见regex demo .
Details
(\.?\d*)
- 第1组(REGEXEXTRACT
返回):可选.
后跟0位或更多位数(更改为(\.?\d+)
以匹配1位或更多位数)\W?
- 可选的非单词字符(?:MC|P)
- 非捕获组(因此,它不会与REGEXEXTRACT
一起返回)MC
substring或P
char .UNTESTED(我不能打算从您选择的格式构建合理的数据样本):
要对两个结束条件进行分组,您需要将它们括在括号中 .
您可以使用regextester或regex101等工具实时查看正则表达式匹配 .