首页 > 其他分享 >正则表达式-语言处理

正则表达式-语言处理

时间:2023-04-12 12:55:45浏览次数:35  
标签:Java 语言 正则表达式 转义 处理 正则 内容 文本 替换

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

校验文本内容

我们先来看一下数据验证,通常我们在网页上输入的手机号、邮箱、日期等,都需要校验。校验的特点在于,整个文本的内容要符合正则,比如要求输入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

标签:Java,语言,正则表达式,转义,处理,正则,内容,文本,替换
From: https://www.cnblogs.com/xiaochenNN/p/17309433.html

相关文章

  • java事件处理机制
     事件源可以是一个键可以是一个鼠标可以是一个按钮.....发生了就是事件源事件就是事件的对象,当事件源发生了就会有事件对象(事件对象就会传递给事件监听者)事件监听者接受刀事件对象了之后会进行事件处理方法   ......
  • go语言学习-gin框架中间件
    全局中间件所有的请求都经过此中间件//所有请求经过此中间件packagemainimport( "fmt" "time" "github.com/gin-gonic/gin")//定义中间件funcMiddleWare()gin.HandlerFunc{ returnfunc(ctx*gin.Context){ t:=time.Now() fmt.Println("中间件开始执行了......
  • 编程语言和编程工具
    使用过的语言:C、C++、Java、PythonC语言的优势:C语言编写的代码效率高,运行速度快。C语言的语法和功能简单,易于学习和理解。C语言具有很高的可移植性,可以在多种不同的平台上运行。C++语言的优势:C++语言是一种强类型的面向对象编程语言,可以方便地进行模块化的设计和开发。C......
  • UVa 113 / POJ 2109 Power of Cryptography (使用double处理大整数&泰勒公式与误差分
    113-PowerofCryptographyTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=99&page=show_problem&problem=49http://poj.org/problem?id=2109题意:给出n和p,求出 ,但是p可以很大()如何存储p?不用大数可不可以?先看看double......
  • Scheme语言在线代码运行编译工具推荐
    Scheme语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Scheme语言代码,点击运行,可在线编译运行Scheme语言,Scheme语言代码在线运行调试,Scheme语言在线编译,可快速在线测试您的Scheme语言代码,在线编译Scheme语言代码发现是否存在错误,如果代码测试通过,将会输出编译后的......
  • 逍遥自在学C语言 | 位运算符^的高级用法
    前言在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、交换两个变量的值#include<stdio.h>......
  • 常用的多边形处理库记录
    GeoPands Shapely pyproj Fiona rasterio 目前就收集到上面五个,详情见Python处理时空数据常用库案例及练习-CSDN博客。下面为它们的中文文档说明:shapely:Shapely用户手册—Shapely1.8.0文档(osgeo.cn)fiona:Fiona—Fiona2.0dev文档(osgeo.cn)......
  • 四种语言刷算法之相交链表
    力扣160. 相交链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*getIntersectionNode(structListNode*headA,structListNode*headB){if(headA==NULL||headB==NU......
  • 逍遥自在学C语言 位运算符 "|" 的5种高级用法
    前言在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍|运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、将两个字节合并成一个16位整数#inclu......
  • C语言矩阵顺时针旋转90度和力扣34. 在排序数组中查找元素的第一个和最后一个位置
    #include<iostream>usingnamespacestd;#defineM5#include<stdlib.h>//原矩阵,某元素第n行第m列,;顺时针旋转90度后,位置变成倒数第n列,第m行//即先转置再水平翻转intn=0;voidrotation_90(intmatrix[][M],intn){ for(inti=0;i<n;i++) { for(intj=i;j<M;j++)......