Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列中的文本分为两列(文本和数字)-谷歌工作表或Excel_Excel_Google Sheets_Regular Language - Fatal编程技术网

将列中的文本分为两列(文本和数字)-谷歌工作表或Excel

将列中的文本分为两列(文本和数字)-谷歌工作表或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

我在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&"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
子句的意思是,“如果找不到此模式,只需返回原始单元格数据。”