正则表达式-语言处理

在进行文本处理时,正则解决的问题大概可以分成四类,分别是校验文本内容、提取文本内容、替换文本内容、切割文本内容。在这一节里,我会从功能分类出发,给你讲解在一些常见的编程语言中,如何正确地实现这些功能。

校验文本内容

我们先来看一下数据验证,通常我们在网页上输入的手机号、邮箱、日期等,都需要校验。校验的特点在于,整个文本的内容要符合正则,比如要求输入6位数字的时候,输入123456abc就是不符合要求的。

下面我们以验证日期格式年月日为例子来讲解,比如2020-01-01,我们使用正则\d{4}-\d{2}-\d{2}来验证。

Java

在 Java 中,正则相关的类在 java.util.regex 中,其中最常用的是 Pattern 和 Matcher, Pattern 是正则表达式对象,Matcher 是匹配到的结果对象,Pattern 和 字符串对象关联,可以得到一个 Matcher。下面是 Java 中匹配的示例:

img

Java中目前还没有原生字符串,在之前转义一节讲过,正则需要经过字符串转义和正则转义两个步骤,因此在用到反斜杠的地方,比如在表示数字的\d,就得在字符串中表示成\d,转义会让书写正则变得稍微麻烦一些,在使用的时候需要留意一下。

2.提取文本内容

我们再来看一下文本内容提取,所谓内容提取,就是从大段的文本中抽取出我们关心的内容。比较常见的例子是网页爬虫,或者说从页面上提取邮箱、抓取需要的内容等。如果要抓取的是某一个网站,页面样式是一样的,要提取的内容都在同一个位置,可以使用xpath 或 jquery 选择器 等方式,否则就只能使用正则来做了。

java

在 Java 中,可以使用 Matcher 的 find 方法来获取查找到的内容,就像下面这样:

img

替换文本内容

我们接着来看一下文本内容替换,替换通常用于对原来的文本内容进行一些调整。之前我 们也讲解过一些使用正则进行替换的例子,今天我们再来了解一下在部分常见的编程语言中,使用正则进行文本替换的方法。

Java

在Java中,一版是使用replaceAll方法进行替换,一次性替换所有的匹配到的文本。

img

4.切割文本内容

我们最后再来看一下文本内容切割,通常切割用于变长的空白符号,多变的标点符号等。

下面我们来讲解一下具体的例子,让你了解一下正则切割文本在部分常见编程语言中的使用。

Java

Java中切割也是类似的,由于没有原生字符串,转义稍微麻烦点。

img

在Java中,也可以传入第二个参数,类似于Go的结果。

img

posted @ 2023-04-12 12:46  WonderC  阅读(20)  评论(0编辑  收藏  举报