特别感谢我纸鹿大佬的指导,表白我纸鹿!

引子

有时我们想要收藏一些文章或歌词,并保留其英文原文细细品味,为了突出中英文对照需要分别为中英文段落设置格式,如为英文段落设置斜体,为中文段落设置粗体。此时由于中英文段落交错逐段对照,手动设置格式工作量巨大且无趣,此时可以使用正则表达式进行批量操作

操作

  • 在靠谱的文本编辑器(《Marktaxt》的正则功能就十分不靠谱)中打开替换功能(一般可用ctrl+h快捷键)

  • 欲选中英文段落,在“查找”中输入(^[a-zA-Z].*);欲选中中文段落,则输入(^[\x{4e00}-\x{9fa5}].*)

  • 欲使英文段落斜体,即在英文段落前后插入“*”,在“替换”中输入*S1* ;欲使中文段落粗体,即在中文段落前后插入“**”则输入**S1**

解释

  • “查找”时使用的表达式中,()表示捕获,加上()可保证在替换时是在选中内容前后插入星号而非将其替换为星号

  • “替换”时使用的表达式中,S1表示查找中所选中的内容

  • [a-zA-Z]表示所有英文字母区间,[\x{4e00}-\x{9fa5}]表示所有汉字区间

  • ^表示匹配字符串的开始位置。也就是说,匹配的模式必须从字符串的第一个字符开始。

  • .表示匹配任何单个字符(除了换行符),而*表示匹配前面的模式零次或多次。因此,.*表示匹配任何数量的任何字符(包括零个字符)。

    将这些部分组合起来,正则表达式 ^[a-zA-Z].* 的含义是:匹配任何以英文字母开头,后面跟着任何数量的任何字符的字符串。例如,它将匹配 “Apple”、”banana”、”C123” 等,但不会匹配 “123” 或 “!”,因为这些字符串不以英文字母开头。