将列中的文本分为两列(文本和数字)-谷歌工作表或Excel
我在google sheets中有一个文档,该列由名称和版本组成,比如NLog.Config.4.3.0、NLog.Config.4.4.9等等。 有关其他示例,请参见下图 我需要将其分为两列-名称和版本,但我对正则表达式不太熟悉,无法获得这些信息 我可以使用excel,然后将它导入到Google文档中,怎么做对我来说并不重要将列中的文本分为两列(文本和数字)-谷歌工作表或Excel,excel,google-sheets,regular-language,Excel,Google Sheets,Regular Language,我在google sheets中有一个文档,该列由名称和版本组成,比如NLog.Config.4.3.0、NLog.Config.4.4.9等等。 有关其他示例,请参见下图 我需要将其分为两列-名称和版本,但我对正则表达式不太熟悉,无法获得这些信息 我可以使用excel,然后将它导入到Google文档中,怎么做对我来说并不重要 您可以尝试以下方法: =IFERROR(LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"012
您可以尝试以下方法:
=IFERROR(LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))),A1)
假设字符串在A1中,那么在B1中可以输入:
=LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")))
在这方面:
=RIGHT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1)
如果存在没有数字的案例,您可能需要进行一些调整,因为这将产生错误,例如,您可以使用如下所示的Iferror对其进行舍入:
=IFERROR(LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))),A1)
注意:A1&“0123456789”是避免搜索返回错误的“技巧”,因为搜索是查找数组中的所有数字;我们只需要第一个的位置,因此MIN()。您可以尝试以下方法:
=IFERROR(LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))),A1)
假设字符串在A1中,那么在B1中可以输入:
=LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")))
在这方面:
=RIGHT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1)
如果存在没有数字的案例,您可能需要进行一些调整,因为这将产生错误,例如,您可以使用如下所示的Iferror对其进行舍入:
=IFERROR(LEFT(A1,LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))),A1)
注意:A1&“0123456789”是避免搜索返回错误的“技巧”,因为搜索是查找数组中的所有数字;我们只需要第一个的位置,即MIN()。假设您的内容在列
A
(Google Sheets)中,请在列A
以外的任何单元格中尝试此arrayformula
:
=数组格式(iferror(拆分(REGEXREPLACE($A:$A,”(\)(\d++$))、字符(6655)和“$2”)、字符(6655)))
有两个正则表达式组在()
中表示:
(\)
和(\d++$)
第一组查找点
——使用\
进行转义。第二组查找一个数字(0-9)\d
,一次或多次出现+
,然后以$
一个或多个+
任何字符
结束
替换内容是char(6655)
(通常在您的数据集中找不到),第二组的内容是$2
然后,split
函数通过char(6655)
字符将文本分成两列
iferror
如果未分割任何内容,则不返回任何内容
arrayformula
在工作表下运行。假设您的内容在A列(谷歌工作表)中,请在A列以外的任何单元格中尝试此arrayformula
:
=数组格式(iferror(拆分(REGEXREPLACE($A:$A,”(\)(\d++$))、字符(6655)和“$2”)、字符(6655)))
有两个正则表达式组在()
中表示:
(\)
和(\d++$)
第一组查找点
——使用\
进行转义。第二组查找一个数字(0-9)\d
,一次或多次出现+
,然后以$
一个或多个+
任何字符
结束
替换内容是char(6655)
(通常在您的数据集中找不到),第二组的内容是$2
然后,split
函数通过char(6655)
字符将文本分成两列
iferror
如果未分割任何内容,则不返回任何内容
arrayformula
在工作表下方工作。假设您的原始数据位于A2:A中,请将其置于B2:
=ArrayFormula(IFERROR(REGEXEXTRACT(A2:A,“(\D+)\(.+)”)和A2:A))
正则表达式的内容是“提取任意数量的非数字,最多不包括一个句点,作为第一组,剩余的所有数字都放入第二组。”(换句话说,“在句点后遇到一个数字,就开始第二组。”)
IFERROR
子句的意思是,“如果找不到此模式,只需返回原始单元格数据即可。”假设原始数据位于A2:A中,则将其置于B2:
=ArrayFormula(IFERROR(REGEXEXTRACT(A2:A,“(\D+)\(.+)”)和A2:A))
正则表达式的内容是“提取任意数量的非数字,最多不包括一个句点,作为第一组,剩余的所有数字都放入第二组。”(换句话说,“在句点后遇到一个数字,就开始第二组。”)
IFERROR
子句的意思是,“如果找不到此模式,只需返回原始单元格数据。”