正则表达式匹配选项
客户需求:
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$、选项 ,这种不替换
要替换掉$ 不是简单修改几个符号就能解决的,
分三步:
- 每个字母前面都有一个$,匹配这个$。
\$(?=[A-Z])
- 匹配字母后面的 $、 。
(?<=[A-Z])\$、
- 匹配选项前面的 $ 。
\$(?=选项$)
每句最后边是 $选项。(?=.*\$选项$)
选项前面的 \$
也要替换掉
得到正则表达式:
((\$(?=[A-Z])|(?<=[A-Z])\$、)(?=.*\$选项$)|\$(?=选项$))