正则表达式如何实现不替换查找的匹配文本?
大家都知道,正则表达式能够实现强大的查找规律文字并实现替换的功能。那么,是否能够实现不替换查找到的匹配文字呢?可能我问题描述得很拗口,大家看一下下面的需求例子便知:
21.循序渐进22.世俗23.间接经验与直接经验相结合24.教科书25.舒尔茨26.培养人27.人的全面发展28.皮亚杰29.德鲁克30.归宿31.民主平等32.因材施教33.从做中学34.钻研教材35.京师同文馆36.间接37.组织形式38.知39.认知40.马卡连柯
上面是一段教师资格证教育学考试的填空题答案,我想将以上文本做成每个答案占一行的格式,如何操作呢?答案就是要学会使用正则表达式的“$1”功能(不含双引号)。这个问题可以使用如下正则表达式来解决:
查找:(\d+)
替换:\n$1
实现的效果如下:
21.循序渐进
22.世俗
23.间接经验与直接经验相结合
24.教科书
25.舒尔茨
26.培养人
27.人的全面发展
28.皮亚杰
29.德鲁克
30.归宿
31.民主平等
32.因材施教
33.从做中学
34.钻研教材
35.京师同文馆
36.间接
37.组织形式
38.知
39.认知
40.马卡连柯
大家看了这个例子应该就很清楚我要表达的意思了。在这个例子中最主要的功能就是“$1”表达式,这个表达式是什么意思呢?$1就是导入第一个括号内匹配到的内容。我们第一个括号是“(\d+)” ,也就是将查找到的数字删除后再次输入,相当于没有变化,也就是本文开头说的不替换。细心的读者就会问:$2、$3又是什么意思呢?下面再给出一个例子给大家参考:
例如匹配1(2)(3)
替换为$1$2$1
替换结果就是232
好了,应该都了解是什么作用了吧。$1是第一个小括号里的 ,$2是第2个小括号里的,依次类推。