Java正则表达式以及Pattern和Matcher类详解

2023-11-05

概述

正则表达式

一、概述

用来描述或者匹配一系列符合某个语句规则的字符串

二、单个符号

1、英文句点.符号:匹配单个任意字符。

表达式t.o可以匹配:tnot#oteo等等。不可以匹配:tnnotoTnot正o等。
2、中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。

表达式:t[abcd]n 只可以匹配:tantbntcntdn。不可以匹配:thntabntn等。
3、| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。

表达式:t(a|b|c|dd)n 只可以匹配:tantbntcntddn。不可以匹配taantntabcn等。
4、表示匹配次数的符号

在这里插入图片描述

表达式:[0—9]{3}\—[0-9]{2}\—[0-9]{3} 的匹配格式为:999—99—999因为符号在正则表达式中有特殊的含义,它表示一个范围,所以在前面加转义字符\

5、^符号:匹配输入字符的开始位置。如果用在方括号内,^表示不想匹配的字符。

表达式:[^x] 第一个字符不能是x
6、\S符号:非空字符
7、\s符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。
8、\r符号:空格符,与\n、\tab相同

在这里插入图片描述

三、元字符及其在正则表达式上下文中的行为

元字符 在正则表达式中的行为
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 \n\r之后的位置
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 \n\r之前的位置
* 匹配前面的子表达式零次或多次,*等价于{0,}
+ 匹配前面的子表达式一次或多次,+ 等价于 {1,}
? 匹配前面的子表达式零次或一次,? 等价于 {0,1}
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {m,n}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
{n} n 是一个非负整数,匹配确定的n 次
{n,} n 是一个非负整数,至少匹配n 次
{m,n} m 和 n 均为非负整数,其中m <= n。最少匹配 m 次且最多匹配 n 次。在逗号和两个数之间不能有空格
. 匹配除 \n之外的任何单个字符。要匹配包括 \n 在内的任何字符,请使用像 [.\n]的模式
(pattern) 匹配pattern 并捕获这一匹配。获取匹配结果以后可以用于分组。
(?:pattern) 匹配pattern 但不捕获匹配结果,也就是说这是一个非捕获匹配,不进行存储供以后使用
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用
(?!pattern) 负向预查,与(?=pattern)作用相反
x|y 匹配 xy
[xyz] 字符集合,匹配[]里面的字符,即xyz
[^xyz] 否定字符集合,匹配[]之外的字符,比如abc
[a-z] 字符范围,匹配指定范围内的任意字符,如abc
[^a-z] 否定字符范围,匹配任何不在指定范围内的任意字符
\b 匹配一个单词边界,也就是指单词和空格间的位置
\B 匹配非单词边界
\cx 匹配由x指明的控制字符
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\f 匹配一个换页符。等价于 \x0c\cL
\n 匹配一个回车符,等价于 \x0d\cM
\s 匹配任何空白字符,包括空格、制表符、换页符等等,等价于[ \f\n\r\t\v]
\S 匹配任何非空白字符,等价于 [^ \f\n\r\t\v]
\t 匹配一个制表符,等价于 \x09\cI
\v 匹配一个垂直制表符,等价于 \x0b\cK
\w 匹配包括下划线的任何单词字符,等价于[A-Za-z0-9_]
\W 匹配任何非单词字符,等价于 [^A-Za-z0-9_]

四、常用正则表达式整理

  • 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
  • 匹配空行的正则表达式:\n[\s| ]*\r
  • 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
  • 匹配首尾空格的正则表达式:(^\s*)|(\s*$)
  • 匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //
  • 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  • 匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
  • sql语句:^(select|drop|delete|create|update|insert).*$
  • 非负整数:^\d+$
  • 正整数:^[0-9]*[1-9][0-9]*$
  • 非正整数:^((-\d+)|(0+))$
  • 负整数:^-[0-9]*[1-9][0-9]*$
  • 整数:^-?\d+$
  • 非负浮点数:^\d+(\.\d+)?$
  • 正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  • 非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
  • 负浮点数:^(-((正浮点数正则式)))$
  • 英文字符串:^[A-Za-z]+$
  • 英文大写串:^[A-Z]+$
  • 英文小写串:^[a-z]+$
  • 英文字符数字串:^[A-Za-z0-9]+$
  • 英数字加下划线串:^\w+$
  • E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
  • URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
  • 邮政编码:^[1-9]\d{5}$
  • 电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$
  • 手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$
  • 双字节字符(包括汉字在内):^\x00-\xff
  • 匹配首尾空格:(^\s*)|(\s*$)
  • 提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
  • 提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  • 提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
  • 提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
  • 提取信息中的中国手机号码:(86)*0*13\d{9}
  • 提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
  • 提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
  • 提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
  • 提取信息中的浮点数(即小数):(-?\d*)\.?\d+
  • 提取信息中的任何数字 :(-?\d*)(\.\d+)?
  • 电话区号:/^0\d{2,3}$/
  • 腾讯QQ号:^[1-9]*[1-9][0-9]*$
  • 帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

Pattern和Matcher类详解

概述

  • Pattern(模式)类的作用在于编译正则表达式后创建一个匹配模式
  • Matcher(匹配)类使用Pattern实例提供的模式信息对正则表达式进行匹配

Pattern类

常用方法及介绍

  • Pattern complie(String regex)

​ 由于Pattern的构造函数是私有的,不可以直接创建,所以通过静态方法compile(String regex)方法来创建,将给定的正则表达式编译并赋予给Pattern类。

  • String pattern()

    返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数

@Test
public void testPattern() {
    String regex = "\\?|\\*";
    Pattern pattern = Pattern.compile(regex);
    String patternStr = pattern.pattern();//返回\?\*
    System.out.println(patternStr);
}
  • Pattern compile(String regex, int flags)

​ 功能和compile(String regex)相同,不过增加了flag参数

  • int flags()

    返回当前Pattern的匹配flag参数

    flag参数用来控制正则表达式的匹配行为,可取值范围如下:

Pattern.CANON_EQ 当且仅当两个字符的”正规分解(canonical decomposition)”都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式”a\u030A”会匹配”?”。默认情况下,不考虑”规范相等性(canonical equivalence)”。

Pattern.CASE_INSENSITIVE(?i) 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹 配,只要将UNICODE_CASE与这个标志合起来就行了。

Pattern.COMMENTS(?x) 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的”\s”,而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束.可以通过嵌入式的标志来启用Unix行模式。

Pattern.DOTALL(?s)在这种模式下,表达式’.’可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式’.’不匹配行的结束符。

Pattern.MULTILINE(?m)在这种模式下,’^’和’ ’ 分 别 匹 配 一 行 的 开 始 和 结 束 。 此 外 , ’ ’ 仍 然 匹 配 字 符 串 的 开 始 , ’ ’分别匹配一行的开始和结束。此外,’^’仍然匹配字符串的开始,’ ’也匹配字符串的结束.默认情况下,这两个表达式仅仅匹配字符串的开始和结束。

Pattern.UNICODE_CASE(?u) 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。

Pattern.UNIX_LINES(?d) 在这个模式下,只有’\n’才被认作一行的中止,并且与’.’,’^’以及’$’进行匹配。

  • Matcher matcher(CharSequence input)

​ 对指定输入的字符串创建一个Matcher对象

@Test
public void testMatcher() {
    Pattern pattern = Pattern.compile("\\?{2}");
    Matcher matcher = pattern.matcher("??");
    boolean matches = matcher.matches();// true
    System.out.println(matches);
}
  • String[] split(CharSequence input)

    分割字符串

  • String[] split(CharSequence input, int limit)
    功能和String[] split(CharSequence input)相同,增加参数limit目的在于要指定分割的段数

@Test
public void testSplit() {
    String regex = "\\?|\\*";
    Pattern pattern = Pattern.compile(regex);
    String[] splitStr = pattern.split("123?123*456*456");//123 123 456 456
    System.out.println(splitStr);
    String[] splitStr1 = pattern.split("123?123*456*456", 2);//123 123*456*456
    System.out.println(splitStr1);
}
  • boolean matches()

​ 编译给定的正则表达式并且对输入的字串以该正则表达式为模开展匹配。该方法适合于该正则表达式只会使用一次的情况,也就是只进行一次匹配工作,因为这种情况下并不需要生成一个Matcher实例。

@Test
public void testMatches() {
    String regex = "\\?|\\*";
    Pattern pattern = Pattern.compile(regex);
    boolean matches = pattern.matches(regex, "?");//返回true
    System.out.println(matches);
}

Matcher类

常用方法及介绍

  • boolean matches()

​ 最常用方法:尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。

@Test
public void testMatcherMatches() {
    Pattern pattern = Pattern.compile("\\?{2}");
    Matcher matcher = pattern.matcher("??");
    boolean matches = matcher.matches();//true
    System.out.println(matches);
    matcher = pattern.matcher("?");
    matches = matcher.matches();//false
    System.out.println(matches);
}
  • boolean lookingAt()

​ 对前面的字符串进行匹配,只有匹配到的字符串在最前面才会返回true

@Test
public void testLookingAt() {
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher("22bb23");
    boolean match = m.lookingAt();//true
    System.out.println(match);
    m = p.matcher("bb2233");
    match= m.lookingAt();
    System.out.println(match);//false
}
  • boolean find()

​ 扫描输入序列以查找与该模式匹配的下一个子序列。对字符串进行匹配,匹配到的字符串可以在任何位置

@Test
public void testFind() {
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher("22bb23");
    m.find();// 返回true
    Matcher m2 = p.matcher("aa2223");
    m2.find();// 返回true
    Matcher m3 = p.matcher("aa2223bb");
    m3.find();// 返回true
    Matcher m4 = p.matcher("aabb");
    m4.find();// 返回false
}
  • int start()

​ 返回当前匹配到的字符串在原目标字符串中的位置

  • int end()

​ 返回当前匹配的字符串的最后一个字符在原目标字符串中的索引位置

  • String group()

​ 返回匹配到的子字符串

@Test
public void testMore() {
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher("aa22bb23");
    m.find();
    int start = m.start();//2
    String group = m.group();//22
    int end = m.end();//4
    System.out.println(start);
    System.out.println(group);
    System.out.println(end);
    m.find();
    start = m.start();//6
    group = m.group();//23
    end = m.end();//8
    System.out.println(start);
    System.out.println(group);
    System.out.println(end);
}
package org.zpli.demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;

/**
 * created at 2022/4/22 2:56 下午
 *
 * @author somnuszpli
 */
public class RegexTest {

    @Test
    public void test1() {
        String inputStr = "http://localhost:8080/index/marketplaces/80000/pages/helloworld";
        String regex = ".*/index(?:/miniProg)?/(?:industrySites|marketplaces)?/(\\d+)/pages/([^/]+)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(inputStr);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

    @Test
    public void testPattern() {
        String regex = "\\?|\\*";
        Pattern pattern = Pattern.compile(regex);
        String patternStr = pattern.pattern();//返回\?\*
        System.out.println(patternStr);
    }

    @Test
    public void testMatcher() {
        Pattern pattern = Pattern.compile("\\?{2}");
        Matcher matcher = pattern.matcher("??");
        boolean matches = matcher.matches();// true
        System.out.println(matches);
    }

    @Test
    public void testSplit() {
        String regex = "\\?|\\*";
        Pattern pattern = Pattern.compile(regex);
        String[] splitStr = pattern.split("123?123*456*456");//123 123 456 456
        System.out.println(splitStr);
        String[] splitStr1 = pattern.split("123?123*456*456", 2);//123 123*456*456
        System.out.println(splitStr1);
    }

    @Test
    public void testMatches() {
        String regex = "\\?|\\*";
        Pattern pattern = Pattern.compile(regex);
        boolean matches = pattern.matches(regex, "?");//返回true
        System.out.println(matches);
    }

    @Test
    public void testMatcherMatches() {
        Pattern pattern = Pattern.compile("\\?{2}");
        Matcher matcher = pattern.matcher("??");
        boolean matches = matcher.matches();//true
        System.out.println(matches);
        matcher = pattern.matcher("?");
        matches = matcher.matches();//false
        System.out.println(matches);
    }

    @Test
    public void testLookingAt() {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("22bb23");
        boolean match = m.lookingAt();//true
        System.out.println(match);
        m = p.matcher("bb2233");
        match = m.lookingAt();
        System.out.println(match);//false
    }

    @Test
    public void testFind() {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("22bb23");
        m.find();// 返回true
        Matcher m2 = p.matcher("aa2223");
        m2.find();// 返回true
        Matcher m3 = p.matcher("aa2223bb");
        m3.find();// 返回true
        Matcher m4 = p.matcher("aabb");
        m4.find();// 返回false
    }

    @Test
    public void testMore() {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("aa22bb23");
        m.find();
        int start = m.start();//2
        String group = m.group();//22
        int end = m.end();//4
        System.out.println(start);
        System.out.println(group);
        System.out.println(end);
        m.find();
        start = m.start();//6
        group = m.group();//23
        end = m.end();//8
        System.out.println(start);
        System.out.println(group);
        System.out.println(end);
    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java正则表达式以及Pattern和Matcher类详解 的相关文章

  • 如何获取枚举的子集

    大多数情况下 包含所有元素的枚举显示在用户界面的下拉列表中 我们只需要在用户界面中显示 5 个字段中的 2 个 通过某种方式利用可用于枚举的相同函数来获取此数据的更简单方法是什么 enum Color RED GREEN BLACK BLU
  • 如何将 .cer 证书导入 java 密钥库?

    在开发 Java Web 服务客户端期间 我遇到了一个问题 Web 服务的身份验证使用客户端证书 用户名和密码 我从网络服务背后的公司收到的客户端证书位于 cer格式 当我使用文本编辑器检查该文件时 它具有以下内容 BEGIN CERTIF
  • 在 MongoDB Java 驱动程序中如何使用 $filter

    我有一个适用于 MQL 的查询 我需要将其翻译成Java MQL 中的查询如下所示 db
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 从 Bitmap 类创建 .bmp 图像文件

    我创建了一个使用套接字的应用程序 客户端在其中接收图像并将图像数据存储在 Bitmap 类中 谁能告诉我如何创建一个名为我的图像 png or 我的图像 bmp来自此 Bitmap 对象 String base64Code dataInpu
  • 将 JSON Map 传递到 Spring MVC 控制器

    我正在尝试将 Map 的 JSON 表示形式作为 POST 参数发送到我的控制器中 RequestMapping value search do method RequestMethod GET consumes application j
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • 在java中是否可以使用反射创建没有无参数构造函数的“空白”类实例?

    我有一个没有默认构造函数的类 我需要一种方法来获取此类的 空白 实例 空白 意味着实例化后所有类字段都应具有默认值 如 null 0 等 我问这个问题是因为我需要能够序列化 反序列化大对象树 而且我无法访问该对象类的源 并且类既没有默认构造
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 升级到 Tomcat 8 时出现 ClassNotFoundException

    我最近将 NetBeans IDE 从 v7 3 升级到 v8 突然我的应用程序在连接到数据库时在服务器启动时抛出异常 这两个版本的 IDE 之间的唯一区别是后者使用 Tomcat 8 异常日志 javax naming NamingExc
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个
  • 线程“main”中出现异常 java.lang.UnsatisfiedLinkError: ... \jzmq.dll: 找不到依赖库

    我有一个使用 ZMQ 的 java 应用程序 我已经能够在我的 Win7 PC 上运行它 我将 jzmq dll 放在 jar 可执行文件所在的同一文件夹中 然后通过命令 java jar myapp jar 运行它 我的下一步是将其移至服
  • 安卓框架?

    是否有任何框架比构建 Android 应用程序更容易 您会对其中一个感兴趣吗 很快就会有 我正在开发 DroidFu 一个 Android 共享库 它将为您提供 活动 和服务 中直接提供大量实用功能 例如生成列表和错误对话框 检查 Inte

随机推荐

  • bootloader 详细介绍

    Bootloader 对于计算机系统来说 从开机上电到操作系统启动需要一个引导过程 嵌入式Linux系统同样离不开引导程序 这个引导程序就叫作Bootloader 6 1 1 Bootloader介绍 Bootloader是在操作系统运行之
  • 【VIM配置文件】

    1 vim配置文件在 vimrc中 设置完成后保存source即生效 2 插件安装 1 先下载plug vim文件 放置在 vim autoload目录下 下载命令 curl O https raw githubusercontent co
  • 了解typename的双重意义

    1 声明template参数时 前缀关键字class和typename可互换 2 请使用关键字typename表示嵌套从属类型名称 但不得在base class lists 基类列 或member initialization list 成
  • UART的Rx和Tx引脚如何互换,电平如何反转( SWAP-交换算法)

    今天给大家分享关于STM32关于UART的一些新特性 主要针对较新系列STM32 如 STM32H7 F0 G0 G4等 的UART 可通过软件改变Rx和Tx引脚 电平反转 高低反序 介绍超时等 有些时候 我们在外接RS232芯片时 会犯这
  • libdbus 实例以及使用d-feet查看接口方法

    libdbus 实例以及使用d feet查看接口方法 libdbus介绍 总线 linux系统进程间通过dbus通信 D BUS由总线构成 总线分为两种 系统总线 system bus 和会话总线 session bus 系统总线在引导时就
  • 关于win10系统system_service_exception蓝屏(hardwareprotect_x64.sys)

    hardwareprotect x64 sys报错蓝屏主要是由win10系统更新后 系统与鲁大师不兼容 win10会将鲁大师下hardwareprotect x64 sys文件映射到系统文件 导致报错蓝屏 建议在第一次报错蓝屏后 就删除鲁大
  • layui文件上传+ThinkPHP5.1

    引入文件 1 前端html代码
  • 逻辑回归分类器(Logistic Regression Classifier)

    Logistic regression 逻辑回归 是当前业界比较常用的机器学习方法 用于估计某种事物的可能性 也用来进行分类 在分类的情形下 经过学习之后的LR分类器其实就是一组权值w0 w1 wm 当输入测试样本集中的测试数据时 这一组权
  • 元组,字典,集合

    元组 字典 集合的基本操作 python 元组 tuple 基本操作 元组被称为只读列表 数据可被查询 但不能被修改 类似于列表的切片操作 元组写在小括号里面 元素之前用逗号隔开 对于一些不想被修改的数据 可以用元组来保存 创建元组 1 创
  • ModbusRTU协议封装,控制RJ45报警器,复制一下就能用哦~

    本文只对 写保持寄存器 HoldingRegister 做操作 其他类型的寄存器方法方法也在ModbusWriteOrRead类中 可自行测试 报警器设备型号 USB版 JD01AX07 01 设备外观及亮灯 文档说明 部分 注 以下图第一
  • Matlab桌面启动失败java.lang.​NullPointe​rException

    最全的解决方案集合 考虑到之前安装CubeMX时装了java 而Matlab底层是Java 先拿第四条试 成功了 然后删掉改动的部分 nodesktop nojvm再重启 也能用了
  • React event.preventDefault使用方法

    event preventDefault 定义和用法 取消事件的默认动作 简单看一下下面代码 class NameForm extends React Component constructor props super props this
  • 基于布谷鸟优化LSTM的短时电力负荷预测

    0 引言 短期电力负荷预测是电力系统安全调度 经济运行的重要依据 随着电力系统的市场化 负荷预测的精度直接影响到电力系统运行的可靠性 经济性和供电质量 LSTM 为短期电力负荷预测提供了一个新的研究方向 本文将LSTM用于短期电力负荷预测
  • css 上下左右居中的几种方法

    html结构 div class father div class son div div 1 父元素宽高固定 子元素宽高固定 那么子元素可以通过上 左右的固定margin left 父元素宽度 子元素宽度 2 margin top 父元素
  • Spring Data Elasticsearch 3.13 操作摘要

    1 4 7 异步查询结果 可以使用Spring的异步方法执行功能异步运行存储库查询 这意味着该方法在调用时立即返回 而实际的查询执行发生在已提交给Spring的任务中TaskExecutor 异步查询执行与响应式查询执行不同 不应混合使用
  • 软件架构模式-读书笔记(4)-微服务架构

    微服务架构模式作为替代单体应用和面向服务架构的一个可行的选择 在业内迅速取得进展 微服务架构的每个组件都作为一个独立单元进行部署 让每个单元可以通过有效 简化的传输管道进行通信 同时它还有很强的扩展性 应用和组件之间高度解耦 使得部署更为简
  • windows7 安装mongodb

    本文转载至 https blog csdn net qq 27093465 article details 54574948 注意这个安装的位置 下面要用呢 图上的说的是刚刚安装完的时候的样子 打错字啦 1 创建几个文件夹具体如下 数据库路
  • 5.12 QQ群里的第二次线下活动

    author skate time 2013 05 14 5 12 QQ群里的第二次线下活动 分享主题 大数据hadoop 1 5小时 分享人 袁科 完美世界系统中心 长期从事大数据处理技术工作 对分布式系统开发 监控 配置 维护比较感兴趣
  • linux sftp多个秘钥,Linux下sftp配置之密钥方式登录

    由于vsftp采用明文传输 用户名密码可通过抓包得到 为了安全性 需使用sftp 锁定目录且不允许sftp用户登到服务器 由于sftp使用的是ssh协议 需保证用户只能使用sftp 不能ssh到机器进行操作 且使用密钥登陆 不是22端口 创
  • Java正则表达式以及Pattern和Matcher类详解

    概述 正则表达式 一 概述 用来描述或者匹配一系列符合某个语句规则的字符串 二 单个符号 1 英文句点 符号 匹配单个任意字符 表达式t o可以匹配 tno t o teo等等 不可以匹配 tnno to Tno t正o等 2 中括号 只有