2020年6月

客户需求:

A、B、C、D选项→ABCD选项
A、B、C、D其他→A、B、C、D其他

选项不定

当选项后面是"选项"的时候,替换掉、后面是其他的时候,不替换

思路:

替换一般可以匹配分组或者直接匹配要替换的字符。因为选项是不定的,所以不能用分组。

那么,就匹配 "、" 吧。

" 、" 前面是字母,逆向环视:(?<=[A-Z])

必须以 字母+选项 结尾,正向环视: (?=.*?[A-Z]选项$)

于是得到正则表达式

(?<=[A-Z])、(?=.*?选项$)

需求发生变化:

$A$、$B$、$C$、$D$选项
$A$、$B$、$C$、$D$、$E$选项
$A$、$B$、$C$选项
替换掉 $和、

$A$、$B$、$C$、选项 ,这种不替换

要替换掉$ 不是简单修改几个符号就能解决的,

分三步:

  1. 每个字母前面都有一个$,匹配这个$。\$(?=[A-Z])
  2. 匹配字母后面的 $、 。(?<=[A-Z])\$、
  3. 匹配选项前面的 $ 。 \$(?=选项$)

每句最后边是 $选项。(?=.*\$选项$)

选项前面的 \$ 也要替换掉

得到正则表达式:

((\$(?=[A-Z])|(?<=[A-Z])\$、)(?=.*\$选项$)|\$(?=选项$))