regex 按大写字母拆分单词的公式

m0rkklqb  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(125)

我想拿出一个脚本来编程一个自定义公式为谷歌表.这个想法是分割一个字符串组成的多个单词.该公式应该认识到有一个大写字母的单词,并将它们分开.结果将是一个字符串中的单词由“,”分隔.
下面是字符串的一个示例:

Nursing StudentStudentNurseNursing School

Desired Result:
Nursing Student,Student,Nurse,Nursing School

我试着在Google Sheet中使用一个公式:

=split(regexreplace(A1,"[A-Z][^A-Z]*","$0"&char(9)),char(9))

但是,它会生成6个包含以下字符串的单元格:

Nursing Student Student Nurse Nursing School

有谁能帮帮我或者给予我点提示吗?

nzrxty8p

nzrxty8p1#

=REGEXREPLACE(A1,"(\B)([A-Z])",",$2")
  • \B不是单词B顺序。
  • [A-Z]大写字母
  • 如果\B后跟大写字母,则将\B替换为,
ubof19bj

ubof19bj2#

如果您计划在小写字母和大写字母之间插入逗号,您可以使用以下任一方法:

=REGEXREPLACE(A1,"([a-z])([A-Z])","$1,$2")
=REGEXREPLACE(A1,"([[:lower:]])([[:upper:]])","$1,$2")

何处

  • ([a-z])/([[:lower:]])-捕获组1(稍后在替换模式中使用$1引用):任意小写ASCII字母
  • ([A-Z])/([[:upper:]])-捕获组2(稍后在替换模式中使用$2引用):任意大写ASCII字母

请注意,another suggestion基于non-word boundary \B,可以写成=REGEXREPLACE(A1,"\B[A-Z]",",$0"),也将匹配_后面的大写字母和任何数字,因此如果您不期望这种行为,它可能会过火。

相关问题