Regex 在指定的前缀和后缀之间添加连字符
假设Regex 在指定的前缀和后缀之间添加连字符,regex,google-sheets,Regex,Google Sheets,假设前缀={mr,ms}和后缀={junior,senior} 我希望在指定的前缀之后和指定的后缀之前添加连字符 就个人而言,我可以做类似于=REGEXREPLACE(A1,“mr”,“mr-”)和=REGEXREPLACE(A1,“高级”,“高级”)的事情,但是有没有一种方法可以用一个公式来完成上面的所有事情?您可以使用捕获组来简化这一点。这里有两个嵌套替换,一个用于ms和mr案例,另一个用于junior和senior案例: =REGEXREPLACE(REGEXREPLACE(A38,&qu
前缀={mr,ms}
和后缀={junior,senior}
我希望在指定的前缀之后和指定的后缀之前添加连字符
就个人而言,我可以做类似于
=REGEXREPLACE(A1,“mr”,“mr-”)
和=REGEXREPLACE(A1,“高级”,“高级”)
的事情,但是有没有一种方法可以用一个公式来完成上面的所有事情?您可以使用捕获组来简化这一点。这里有两个嵌套替换,一个用于ms
和mr
案例,另一个用于junior
和senior
案例:
=REGEXREPLACE(REGEXREPLACE(A38,"^(mr|ms)","$1-"),"(junior|senior)$","-$1")
解释“^(mr | ms)”
:
-字符串的开头(这样可以避免错误点击,如msmiriamreich)^
-捕获组,包含所有前缀的OR组合(mr | ms)
- 带有
$1
“(初级|高级)$”
:
-捕获组,包含所有后缀的OR组合(初级|高级)
-字符串结尾$
- 带有
$1
将两个正则表达式填充成一个是可能的,但是你会得到一个相当长的正则表达式,因为你必须考虑(有/没有前缀)和(有/没有后缀)的排列。可以使用捕获组来简化。这里有两个嵌套替换,一个用于
ms
和mr
案例,另一个用于junior
和senior
案例:
=REGEXREPLACE(REGEXREPLACE(A38,"^(mr|ms)","$1-"),"(junior|senior)$","-$1")
解释“^(mr | ms)”
:
-字符串的开头(这样可以避免错误点击,如msmiriamreich)^
-捕获组,包含所有前缀的OR组合(mr | ms)
- 带有
$1
“(初级|高级)$”
:
-捕获组,包含所有后缀的OR组合(初级|高级)
-字符串结尾$
- 带有
$1
将两个正则表达式填成一个是可能的,但是你会得到一个相当长的正则表达式,因为你必须考虑(有/没有前缀)和(有/没有后缀)的排列。
假设前缀可以是<代码> XX < /代码>和<代码> x>代码>,但不是<代码> xxx < /代码>,所以XDave= X-Davy和XXDave= XX戴维,但是xxxdavid仍然是xxxdavid<代码>“^(x|xx)”将导致xxxdavid成为x-xxdavid,而“^(xx|x)”
将导致xxxdavid成为xx-xxdavid。有什么方法可以防止这种情况发生吗?如果使用诸如“^(mr | ms | xx(?x))”
之类的消极前瞻,这是可能的,但是,Google正则表达式不支持这种情况。如果名称大写,例如XxDavid
,则可以使用区分大小写的正则表达式模式支持该大小写。假设前缀可以是xx
和x
,但不能是xxx
,因此xdavid=x-david和XxDavid=xx-david,但xxxdavid将保持xxxdavid<代码>“^(x|xx)”将导致xxxdavid成为x-xxdavid,而“^(xx|x)”
将导致xxxdavid成为xx-xxdavid。有什么方法可以防止这种情况发生吗?如果使用诸如“^(mr | ms | xx(?x))”
之类的消极前瞻,这是可能的,但是,Google正则表达式不支持这种情况。如果名称大写,例如XxDavid
,则可以使用区分大小写的正则表达式模式支持该大小写。