-
2020-04-18 18:54:49更多相关内容
-
正则表达式单行、多行模式简介(使用说明)
2020-12-13 15:15:29继上几篇正则表达式相关说明(详情:正则表达式 ),我们今天继续讨论下,它的单行,多行模式使用,及容易出现错误地方。单行,多行模式,都是正则表达式的模式修饰符里面出现的参数。目前常用正则表达式都有该使用... -
使用正则多行模式与单行模式的图文详解
2021-04-21 18:13:33这次给大家带来使用正则多行模式与单行模式的图文详解,使用正则多行模式与单行模式的注意事项有哪些,下面就是实战案例,一起来看一下。在Expresso中,测试“多行模式”测试一注意:这里样例文本中3eeeee后面没有...这次给大家带来使用正则多行模式与单行模式的图文详解,使用正则多行模式与单行模式的注意事项有哪些,下面就是实战案例,一起来看一下。
在Expresso中,测试“多行模式”
测试一
注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的Search Results区中所示。
为什么这里不能匹配1abcde和2abc?
开启多行模式
^ 可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置)
$ 可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置)
关闭多行模式
^ 只能匹配字符串开头
$ 只能匹配字符串结尾
知识点:\r为回车符,\n 为换行符。在windows中,我们平常说的换行,实质上是先回车,后换行;下面有更详细解说。
如上图所示:\r 匹配 [CR]、\n 匹配[LF]
字符串多个段落,比如
ab
cd
e
在windows操作系统中其实是:ab[CR][LF]cd[CR][LF]e
在windows中,文本中的回车换行储存为: 0D 0A。也就是说,先储存的是“回车\r”,再储存的是“换行\n”
CR用符号'\r'表示, ASCII代码是13, 十六进制为0x0D;
LF用符号'\n'表示, ASCII代码是10, 十六进制为0x0A;
正则表达式:(?m)^(\d\w+)(\s*)$
样例文本
匹配结果
在Expresso、PHP中,启用多行模式,"$" 匹配字符串结束位置或者 "\n" 之前的位置。
单行模式
开启单行模式: . 可以匹配任意字符(包括换行符)
关闭单行模式: . 只有匹配 非换行 的其它任意字符(.可匹配\r,即除了不匹配\n外的所有字符。)
多行模式 影响 ^ 和 $ 的匹配
单行模式 影响 . 的匹配
多行模式中必定包含 ^ 或 $ 或同时包含,否则即使加了 m,也没有任何意义
单行模式和多行模式是八杆子打不着的两个概念,只是因为正则发展的历史原因,造就了这样两个MS互斥的概念
单行模式影响的是小数点“.”的匹配范围
多行模式影响的是“^”和“$”的匹配范围
至于后面几个概念,全局匹配,多行模式和贪婪模式之间也没有什么必然联系
全局匹配关闭,只匹配首次成功匹配项,全局匹配开启,匹配所有成功匹配项
全局模式是一些脚本语言中才有的概念
在进行匹配时,关闭全局模式,类似于.NET中的Match方法,开启全局模式,类似于.NET中的Matches方法
在进行替换时,关闭全局模式,类似于Java中的replaceFirst,开启全局模式,类似于Java中的replaceAll
(在进行匹配时,关闭全局模式,类似于PHP中的preg_ match函数;开启全局模式,类似于PHP中的preg_ match_ all函数)
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
-
正则表达式的多行模式与单行模式图文分析
2021-03-21 09:58:00在Expresso中,测试“多行模式”测试一注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的Search Results区中所示。为什么这里不能匹配1abcde和2abc?开启多行模式^ 可以匹配...在Expresso中,测试“多行模式”
测试一
注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的Search Results区中所示。
为什么这里不能匹配1abcde和2abc?
开启多行模式
^ 可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置)
$ 可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置)
关闭多行模式
^ 只能匹配字符串开头
$ 只能匹配字符串结尾
知识点:\r为回车符,\n 为换行符。在windows中,我们平常说的换行,实质上是先回车,后换行;下面有更详细解说。
如上图所示:\r 匹配 [CR]、\n 匹配[LF]
字符串多个段落,比如
ab
cd
e
在windows操作系统中其实是:ab[CR][LF]cd[CR][LF]e
在windows中,文本中的回车换行储存为: 0D 0A。也就是说,先储存的是“回车\r”,再储存的是“换行\n”
CR用符号'\r'表示, ASCII代码是13, 十六进制为0x0D;
LF用符号'\n'表示, ASCII代码是10, 十六进制为0x0A;
正则表达式:(?m)^(\d\w+)(\s*)$
样例文本
匹配结果
在Expresso、PHP中,启用多行模式,"$" 匹配字符串结束位置或者 "\n" 之前的位置。
单行模式
开启单行模式: . 可以匹配任意字符(包括换行符)
关闭单行模式: . 只有匹配 非换行 的其它任意字符(.可匹配\r,即除了不匹配\n外的所有字符。)
多行模式 影响 ^ 和 $ 的匹配
单行模式 影响 . 的匹配
多行模式中必定包含 ^ 或 $ 或同时包含,否则即使加了 m,也没有任何意义
单行模式和多行模式是八杆子打不着的两个概念,只是因为正则发展的历史原因,造就了这样两个MS互斥的概念
单行模式影响的是小数点“.”的匹配范围
多行模式影响的是“^”和“$”的匹配范围
至于后面几个概念,全局匹配,多行模式和贪婪模式之间也没有什么必然联系
全局匹配关闭,只匹配首次成功匹配项,全局匹配开启,匹配所有成功匹配项
全局模式是一些脚本语言中才有的概念
在进行匹配时,关闭全局模式,类似于.NET中的Match方法,开启全局模式,类似于.NET中的Matches方法
在进行替换时,关闭全局模式,类似于Java中的replaceFirst,开启全局模式,类似于Java中的replaceAll
(在进行匹配时,关闭全局模式,类似于PHP中的preg_ match函数;开启全局模式,类似于PHP中的preg_ match_ all函数)
-
php 单行匹配,使用正则多行模式与单行模式的图文详解
2021-04-21 18:13:33这次给大家带来使用正则多行模式与单行模式的图文详解,使用正则多行模式与单行模式的注意事项有哪些,下面就是实战案例,一起来看一下。在Expresso中,测试“多行模式”测试一注意:这里样例文本中3eeeee后面没有...这次给大家带来使用正则多行模式与单行模式的图文详解,使用正则多行模式与单行模式的注意事项有哪些,下面就是实战案例,一起来看一下。
在Expresso中,测试“多行模式”
测试一
注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的Search Results区中所示。
为什么这里不能匹配1abcde和2abc?
开启多行模式
^ 可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置)
$ 可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置)
关闭多行模式
^ 只能匹配字符串开头
$ 只能匹配字符串结尾
知识点:\r为回车符,\n 为换行符。在windows中,我们平常说的换行,实质上是先回车,后换行;下面有更详细解说。
如上图所示:\r 匹配 [CR]、\n 匹配[LF]
字符串多个段落,比如
ab
cd
e
在windows操作系统中其实是:ab[CR][LF]cd[CR][LF]e
在windows中,文本中的回车换行储存为: 0D 0A。也就是说,先储存的是“回车\r”,再储存的是“换行\n”
CR用符号'\r'表示, ASCII代码是13, 十六进制为0x0D;
LF用符号'\n'表示, ASCII代码是10, 十六进制为0x0A;
正则表达式:(?m)^(\d\w+)(\s*)$
样例文本
匹配结果
在Expresso、PHP中,启用多行模式,"$" 匹配字符串结束位置或者 "\n" 之前的位置。
单行模式
开启单行模式: . 可以匹配任意字符(包括换行符)
关闭单行模式: . 只有匹配 非换行 的其它任意字符(.可匹配\r,即除了不匹配\n外的所有字符。)
多行模式 影响 ^ 和 $ 的匹配
单行模式 影响 . 的匹配
多行模式中必定包含 ^ 或 $ 或同时包含,否则即使加了 m,也没有任何意义
单行模式和多行模式是八杆子打不着的两个概念,只是因为正则发展的历史原因,造就了这样两个MS互斥的概念
单行模式影响的是小数点“.”的匹配范围
多行模式影响的是“^”和“$”的匹配范围
至于后面几个概念,全局匹配,多行模式和贪婪模式之间也没有什么必然联系
全局匹配关闭,只匹配首次成功匹配项,全局匹配开启,匹配所有成功匹配项
全局模式是一些脚本语言中才有的概念
在进行匹配时,关闭全局模式,类似于.NET中的Match方法,开启全局模式,类似于.NET中的Matches方法
在进行替换时,关闭全局模式,类似于Java中的replaceFirst,开启全局模式,类似于Java中的replaceAll
(在进行匹配时,关闭全局模式,类似于PHP中的preg_ match函数;开启全局模式,类似于PHP中的preg_ match_ all函数)
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
-
多行模式与单行模式图文分析_正则表达式
2021-04-27 03:29:24这篇文章主要介绍了正则表达式的多行模式与单行模式图文分析,需要的朋友可以参考下在Expresso中,测试“多行模式”测试一注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的... -
正则的多行模式 m
2017-07-06 12:50:01如下面的文本,把这段文本不按照换行符切割,直接整个文本匹配/^\s*(\d-\d+|\d-\d+-\d+-\d+)\s+(|OWNSP)\s+(\w+).+/,虽然这在RegexBuddy工具中匹配到正确的结果,但是放到myeclipse...所以需要使用m多行模式。 例:va -
js正则表达式中的单行模式与多行模式实例分析
2020-10-24 20:23:45主要介绍了js正则表达式中的单行模式与多行模式,实例分析了js正则表达式中实现单行模式与多行模式的技巧,需要的朋友可以参考下 -
正则表达式的多行模式与单行模式
2021-03-03 14:15:54测试“多行模式”测试一注意:这里样例文本中3eeeee后面没有回车,光标就在e的后面。匹配的结果是3eeeee,如上图的Search Results区中所示。为什么这里不能匹配1abcde和2abc?开启多行模式^ 可以匹配字符串开头... -
PHP匹配多行的正则表达式分析
2020-12-13 06:17:57代码如下: <table> <tr><td>aaaa</td></tr> <tr><td>bbbb</td></tr> <tr><td>cccc</td></tr> <tr><td>dddd</td></tr> </table> 像这种的文本,用PHP的正则表达式怎么匹配?? 我最初的想法: pattern:”/[.\n]*?<... -
JavaScript正则匹配 多行内容
2020-11-11 21:53:10需求: 通过正则匹配给定代码块中的链接...观察后发现是由于代码之间的换行引起的, 虽然修正模式加上了s, 但是还是需要在每次换行的位置加上.*?进行匹配, 使用一下正则就可以匹配成功 let reg = /<a href="(.*?)" cla -
Python 正则表达式里的单行s和多行m模式
2020-03-02 10:52:51Python 的 re 模块内置函数几乎都有一个 flags...单行模式和多行模式,都增强了对多行文本(即中间包含\n的字符串)的解析能力。 单行模式突破换行符 \n 的阻碍,将匹配视野扩大到整个字符串 多行模式实现换行符 \... -
Java使用正则表达式匹配多行 Pattern flags
2021-03-01 06:25:19Java中正则匹配有多种模式,若不选择模式则默认为单行匹配匹配模式(Pattern flags)compile()方法有两个模式未开匹配模式Pattern compile(String regex)开匹配模式Pattern compile(String regex, int flags)源码关于... -
VS2017用正则表达式替换多行代码
2019-04-26 16:32:00await IndexManyAsync\(item.Value, item.Key, "doc"\);\r\n.*\}.*\r\n.*\} 上面的代码,匹配的是下面的代码 await IndexManyAsync(item.Value, item.Key, "doc"); } } 转载于:... -
eclipse正则多行匹配
2018-03-06 17:30:44正则有多行和单行模式eclipse中在正则前加 (?s) 打开多行匹配(?s)/\*\*(.*?)\*/ 这个正则可以匹配文档注释(蓝色的) -
Python实用技法第27篇:编写多行模式的正则表达式
2019-08-03 22:00:01我们打算用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行。 2、解决方案? 这个问题一般出现在希望使用句点(.)来匹配任意字符,但是忘记了句点并不能匹配换行符。 实例:假设向匹配C语言... -
正则表达式之单行模式与多行模式
2021-04-29 04:26:58单行模式单行模式(single...使用单行模式,只需要在正则表达式的最前面加上(?s)就可以了。下面这个正则表达式可以匹配所有字符(包括换行符):(?s).*由于JS不支持这个模式,接下来使用c#来举一个案例:static void Ma... -
Python: 正则表达式匹配多行,实现多行匹配模式
2018-03-15 11:58:00在这个模式中(?:.|\n)是指定了一个非捕获组(仅仅用来做匹配,部能通过单独捕获或者编号的组) 2) re.DOTALL re.compile()函数接受一个标志参数叫re.DOTALL,在这里非常有用,它可以让正则表达式中的点(.)... -
正则表达式匹配多行的最简方法(Python)
2020-10-21 15:13:38最近需要正则匹配多行,以前很少这样用,但以后可能就会多了,就上网查了一下,发现很多博客都是提问题,没有实际解决,再有就是把一个简单的代码写的特别复杂,不好理解,所以自己...#flags=16 开启多行匹配模式 ... -
正则表达式匹配多行示例– Java
2020-05-22 20:32:04要匹配多行,请添加(?s)前缀或启用Pattern.DOTALL标志。 1.例子 一个地址样本,我们只需要提取“地址1”。 Starting... Address 1: 88 app 2/8 superman taman, puchong 36100, Malaysia Address 2: abc... -
点号(.)匹配多行模式的正则表达式
2021-02-23 22:59:51:)符号,可以对部分正则表达式进行分组匹配,但并不获取‘非捕获组’中匹配的字符串,也不分配组号 import re s = ''' #This line is the first another line the last line# ''' print(re.findall(r'#((?... -
Python正则表达式非贪婪、多行匹配功能示例
2020-12-25 00:20:59本文实例讲述了Python正则表达式非贪婪、多行匹配功能。分享给大家供大家参考,具体如下: 一些regular的tips: 1 非贪婪flag >>> re.findall(r"a(\d+?)","a23b") # 非贪婪模式 ['2'] >>> re.findall(r"a(\d+)",... -
正则表达式匹配多行文本
2019-05-02 00:52:00今天做爬虫项目要用正则表达式匹配,以前没学过正则表达式,发现正则表达式功能真的是很强大。...想了一晚上没有想出来,最后搜索到可以开启多行模式(?s),就不要担心这些空格换行了 <span property="v:summ...