正则表达式匹配最后一个字符如何匹配第2.3位?

base包中的 gsub() 可以替换/删除字符串中的各种标点符号/字母/数据

在gsub函数中,任何字段处理都由将“替换字符”替换到“目标字符”这一流程中实现,令替换字符为’’’'可实现删除,令替换字符为"目标字符+增补内容"可实现增补,替换和切割也是使用类似的操作。

任何符号,包括空格、Tab和换行都是可以识别的

同时字符可以识别多个,进行批量置换

除此之外,gsub还有其他批量操作的方法

以下是所使用的参数的说明:
x - 是字符向量输入。
first - 是第一个字符要被提取的位置。
last - 是最后一个字符要被提取的位置。

    stringr 不是tidyverse 核心 R 包的一部分,故需要使用命令来加载它。

(1)用单引号或双引号来创建字符串。

单引号和双引号在 R中没有区别。一般用双引号。单引号通常用于分隔包含"的字符向量。

其他特殊字符列表(用 ?’"’ 或 ?"’" 命令来查看)

功能:返回字符串中的字符数量:

功能:将多个字符串连接成一个字符串。

参数 … :字符串列表或字符向量

参数 sep :分隔符,默认不分隔

参数 collapse :将字符向量中的字符串合并,并用提供的分隔符分隔

str_c() 函数是向量化的,它可以自动循环短向量,使得其与最长的向 量具有相同的长度:

功能:提取或修改字符串的一部分。

参数start和end:Start给出第一个字符的位置(默认为第一个),end给出最后一个字符的位置(默认为最后一个字符)。

功能:将文本转化为大写

参数locale:区域设置,默认为“en”(英语)。区域设置可以参考 ISO 639 语言编码标准,语言编码是 2 或 3 个字母的缩写,见下表,如“tr”(土耳其语)

参数locale:区域设置

是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。描述了一种字符串匹配的模式(pattern)。通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。

参数match:为TRUE时只显示匹配项,为FALSE时只显示不匹配项,为NA时显示匹配项和不匹配项(默认)

很多 stringr 函数都是成对出现的:一 个函数用于单个匹配,另一个函数用于全部匹配,后者会有后缀 _all。

(1) 精确匹配字符串

(2)用.可以匹配任意字符(除了换行符)(但只能匹配1个字符):

(3)如何匹配字符 . 呢?

. 可以匹配任意字符,正则表达式用\来去除某些字符的特殊含义,因此,要匹配.,需要的正则表达式是.(前面加1个\来去除.匹配任意字符的特殊含义,使其仅用来匹配.)。

\ 在字符串中也用作转义字符(去除某些字符的特殊含义),因此,正则表达式 . 的字符串形式应是 \.

要匹配\,需要的正则表达式是\,对应的字符串形式为"\\"

默认情况下,正则表达式会匹配字符串的任意部分。

需要从字符串的开头或末尾进行匹配时,要设置锚点。

^ 从字符串开头进行匹配。

$ 从字符串末尾进行匹配。

很多特殊模式可以匹配多个字符。(虽然可以匹配多个,但是一次只匹配一个,想匹配多次见3.4)

.可以匹配除换行符外的任意字符。

\d 可以匹配任意数字。

\s 可以匹配任意空白字符(如空格、制表符和换行符)

注意:要想创建包含 \d 或 \s 的正则表达式,需要在字符串中对 \ 进行转义,因此需 要输入 “\d” 或 “\s”。

如果优先级让人感到困惑,那么可以使用括号让其表达得更清晰一些:如gr(e|a)y匹配的是grey或gray。

正则表达式的另一项强大功能是,其可以控制一个模式能够匹配多少次。(是将它前面的字符匹配多少次)

+:1 次或多次。相当于{1,}

*:0 次或多次。相当于{0,}

{n,}:匹配 n 次或更多次。

在正则表达式后面加一个 ?,可以将匹配方式更改为“懒惰的”,即匹配尽量短的字符串。

用语言描述以下正则表达式匹配的是何种模式(仔细阅读来确认我们使用的是正则表达式,还是定义正则表达式的字符串)?
a. ^.*$ #这是正则表达式,.*表示重复0次以上的.,这里^和$表示以任意字符开始,以任意字符结束,故这个匹配的是任意字符。
b. “\{.+\}” #这是定义正则表达式的字符串,由于{和}在正则表达式中有特殊含义,所以\{匹配的是单纯的{,\}匹配的是},.+表示重复1次以上的.,.在正则表达式中可匹配任意字符,故这个匹配的是任意花括号里有至少1个字符的字符串,如"{a}“或”{abc}"等
c. \d{4}-\d{2}-\d{2} #这是正则表达式,\d可以匹配任意数字,{4}意思是将任意数字匹配4次,故这个匹配的是4位数字后接一个连字符,然后是两个数字后接一个连字符,然后是另外两个数字。这是一个正则表达式,可以匹配格式为“YYYY-MM-DD”(“%Y-%m-%d”)的日期。如
d. “\\{4}” #这是定义正则表达式的字符串,正则表达式的字符串中\\匹配的是\,故这个匹配的是\\。

阐明优先级,用于消除复杂表达式中的歧义。【前部分】

能对正则表达式进行分组,分组可以在匹配时回溯引用(如 \1、 \2 等)【本部分】

提取一个复杂匹配的各个 部分【后部分】

回溯引用可以匹配到捕获组曾经匹配过的结果。

回溯引用的标志是反斜杠后加数字

回溯引用中的数字是从左至右计算的。回溯引用中的\1对应第一个圆括号中的内容,\2对应第二个圆括号中的内容。

str_view(fruit, “(…)\1”, match = TRUE) #"(…)\1"中…表示匹配任意两个字符,\1表示回溯引用第一个()中的内容,由于用字符串表示,所以表示为\1,故这个匹配的是名称中有重复的一对字母的所有水果

用语言描述以下正则表达式会匹配何种模式?
“(.).\1.\1” #注意这是定义正则表达式的字符串,表示“一个字符后面跟着任意字符,原始字符,任何其他字符,再重复原始字符”,如"abaca"或"b8b.b",即一共5个字符,第1、3、5个字符一样,其余随意。
基本思想:将一个复杂问题分解为多个简单问题

功能:确定一个字符向量能否匹配一种模式,判断的是能否匹配,故结果是逻辑向量,即TRUE或FALSE

如果正则表达式过于复杂,则应该将其分解为几个更小的子表达式,将每个子表达式的匹配结果赋给一个变量,并使用逻辑运算组合起来。

字符串通常会是数据框的一列,此时我们可以使用 filter 操作

功能:返回字符串中匹配的数量

注意:匹配从来不会重叠。

功能:提取匹配的实际文本

str_extract_all()的参数 simplify 默认为FALSE,返回字符向量列表;如果为TRUE,则返回一个字符矩阵,其中较短的匹配会扩展到与最长的匹配具有同样的长度:

功能:可以给出每个独立分组。

结果:str_match() 返回的不是字符向量,而是一个矩阵,其中一列是完整匹配,后面的列是每个分组的匹配:

如果数据是保存在 tibble 中的,那么使用 tidyr::extract() 会更容易。这个函数的工作方式 与 str_match() 函数类似,只是要求为每个分组提供一个名称,以作为新列放在 tibble 中:

功能:用新字符串替换匹配内容

用法1:用固定字符串替换匹配内容(replacement为固定字符串)

功能:将字符串拆分为多个片段

参数simplify:默认为FALSE,返回的是列表;为TRUE时返回矩阵

因为字符向量的每个分量会包含不同数量的片段,所以 str_split() 会返回一个列表。如果拆分的是长度为 1 的向量,那么只要简单地提取列表的第一个元素即可,.[[1]]的功能类似于head(1)

  • .[[1]] #[[是取子集函数[的变体,只提取单个元素,并丢弃名称
    参数n:表示拆分的片段数,默认为Inf,即返回所有片段还可以设定拆分片段的最大数量:

功能:定位模式在字符串中的位置。可以返回每个匹配的开始位置和结束位置。

    以下3个函数是同一类型函数,都使用修饰函数控制匹配行为

当使用一个字符串作为模式时, R 会自动调用 regex() 函数对其进行包装。

参数:后面这几个参数的默认设置都是FALSE,也就是说,当它们都是FALSE时即为我们前面所学,regex()也可以简写为仅字符串(模式),只是前面学习时未写出默认参数而已,换言之,如果这些参数为TRUE,那就是不同的意思,可以通过修改参数来控制具体的匹配方式

ignore_case(忽略字母大小写):默认为FALSE,匹配时字母区分有大小写。当 ignore_case = TRUE 时,忽略字母大小写,既可以匹配大写字母,也可以匹配小写字母,它总是使用当前的区 域设置:

功能:可以按照字符串的字节形式进行精确匹配,它会忽略正则表达式中的所有特殊字符,并在非常低的层次上进行操作。这样可以不用进行那些复杂的转义操作,而且速度比普通正则表达式要快很多。

功能:使用标准排序规则来比较字符串,这在进行不区分大小写的匹配时是非常有效的。

参数:可以通过设置 locale 参数(区域设置,默认"en"(英语)),以确定使用哪种规则来比较字符。

coll()函数的弱点是速度,因为确定哪些是相同字符的规则比较复杂,与 regex() 和 fixed() 函数相比, coll() 确实比较慢。

功能:匹配(字母、行、句子和单词)边界

type:要检测的边界类型,可以选c(“character”, “line_break”, “sentence”, “word”),即字母、行、句子和单词,前面例子中用到的是匹配单词边界。

(1) 如何找出包含 \ 的所有字符串?分别使用 regex() 和 fixed() 函数来完成这个任务。

    R 基础包中有两个常用函数,它们也可以使用正则表达式。

功能:通过(部分)名称查找对象,可以在全局环境空间中搜索所有可用对象。当不能确切想起函数名称时,这个函数特别有用:

功能:可以列出一个目录下的所有文件

dir() 函数的 patten 参数可以是一个正则表达式,此时它只返回与这个模式相匹配的文件名。

stringr 非常容易学习,因为它只提供了非常少的函数(只有42个)

与 stringr 不同, stringi 的设计思想是尽量全面,几乎包含了我们可以用到的所有函数(有 234 个函数)。

(1) 找出可以完成以下操作的 stringi 函数。

}
执行对大小写不敏感的匹配。
执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

括号用于查找一定范围的字符串:

查找方括号之间的任何字符。
查找任何从 0 至 9 的数字。
查找由 | 分隔的任何选项。
前面的字符,重复n-m次(n,m为数字)

*元字符(Metacharacter)*是拥有特殊含义的字符:

匹配任何包含至少一个 n 的字符串。
匹配任何包含零个或多个 n 的字符串。
匹配任何包含零个或一个 n 的字符串。

hiostry 代表浏览器的历史记录(不建议使用)

<!-- go(),可以用来跳转打指定的页面,需要一个整数作为参数, 1表示向前跳转一个页面,2表示向前跳转两个页面,以此类推。 -1表示向后跳转一个页面,-2表示向后跳转两个页面,以此类推。 --> 6.1 什么是DOM对象 文档对象模型【重点】

浏览器网页就是一个DOM树形结构!

可以对这个DOM树型文档进行访问和修改!

  • 遍历DOM结点:得到Dom结点
  • 删除:删除一个DOM结点
  • 添加:添加一个新的结点

要操作一个DOM结点,就必须要先获得这个DOM结点

这是原生代码,之后尽量使用JQuery()

    • 不指定下标默认是一个数组
    • 类型或者class选择器只会选择第一个

  • nodeName 属性总是返回一个大写字母的值,即使元素在 HTML文档里是小写字母

    • 1.可以body标签下引入js文件
  • class和类型选择器返回的是一个数组,可以下标读取结点

  • 选择的DOM结点修改style里的属性,注意命名修改为驼峰式命名

  • nodeName 属性总是返回一个大写字母的值,即使元素在 HTML文档里是小写字母。

6.3 更新结点【重点】

  • 如需更改 HTML 元素的样式,请使用此语法:

    • value是表单框里的数据

6.5 创建和插入结点

  • 也可以使用键值对形式传值
规定应禁用 input 元素。
规定 input 元素的最大值。
规定 input 元素的最小值。
规定 input 元素的值模式。
规定 input 元素的类型。
  • onclick点击事件【重点】

    • 当用户进入后及离开页面时,会触发 onload 和 onunload 事件。
  • onblur事件 失去焦点(获取焦点后失去)

    • 绑定获取焦点事件,获取光标闪动
    • 表单提交到action属性的地址
    • 失去焦点并且点击其他地方
  • 函数自带的,实参有写成e也有写成event
  • 函数实参中可以省略event

所以好多事件函数都是这样写:


1. 什么是事件监听?

  • addEventListener() 方法为元素附加事件处理程序而不会覆盖已有的事件处理程序

您能够向一个元素添加多个事件处理程序。

您能够向一个元素添加多个相同类型的事件处理程序,例如两个 “click” 事件。

您能够向任何 DOM 对象添加事件处理程序而非仅仅 HTML 元素,例如 window 对象。

  • 第一个参数是事件的类型(比如 “click” 或 “mousedown”)。

  • 第二个参数是当事件发生时我们需要调用的函数。

  • 三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

**注意:**请勿对事件使用 “on” 前缀;请使用 “click” 代替 “onclick”。

阻止本来会发生的效果,比如a标签的跳转

6.9 事件委托【面试】

父元素绑定事件,用来监听子元素的冒泡事件,
找到是哪个子元素的事件

2. 为什么要使用事件委托技术?

减少对DOM操作,提高代码性能

  • 只需要获取ul一个结点,减少对DOM操作!!!
  • nodeName 属性总是返回一个大写字母的值,即使元素在 HTML文档里是小写字母。

6.10 常见结点属性


和后端交互数据的一种格式

  • 不能保存日期格式,其他都可以,日期格式可以string=》new Date(string) 在js中转化为日期变量

**异步交互:**不刷新页面情况下获取并修改后端接口

2. 模板,原生代码实现Ajax

将请求发送到服务器,用于 GET 请求
将请求发送到服务器,用于 POST 请求
向要发送的报头添加标签/值对
定义当 readyState 属性发生变化时被调用的函数
保存 XMLHttpRequest 的状态。0:请求未初始化1:服务器连接已建立2:请求已收到3:正在处理请求4:请求已完成且响应已就绪
以 XML 数据返回响应数据
返回状态文本(比如 “OK” 或 “Not Found”)
  • 可以将信息存储,页面关闭不会消失,存在本地
  • 页面重新加载的时候会刷新
  • 在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。
  • 与 cookie 不同,存储限制要大得多(至少5MB),并且信息不会被传输到服务器。

函数内嵌返回匿名函数,外部可以获取函数内部参数和变量,函数内部参数和变量不会被垃圾回收的 一种手段

  • 不会被回收,内存消耗或泄露
  • 和箭头函数一样,匿名函数的this指向window

2. 应用闭包的主要场景

  • 原生的setTimeout传递的第一个函数不能带参数,通过闭包可以实现传参效果。

 
 
 

 
 
 
 //   (1)如果类型不同,就一定不相等
 //   (2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,
 // 那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)
 //   (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
 //   (4)如果两个值都是true,或是false,那么相等
 //   (5)如果两个值都是null,或是undefined,那么相等 

}

我要回帖

更多关于 正则表达式匹配最后一个字符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信