Java 正则表达式一口气讲完!b( ̄▽ ̄)d

Java 正则表达式元字符

Java正则表达式教程 - Java正则表达式元字符

元字符是在Java正则表达式中具有特殊含义的字符。

Java中的正则表达式支持的元字符如下:

( ) [ ] { } \ ^ $ | ? * + . < > - = !

字符类

元字符 [指定正则表达式中的字符类。

字符类是一组字符。正则表达式引擎将尝试匹配集合中的一个字符。

字符类“[ABC]"将匹配字符A,B或C.例如,字符串“woman"或“women"将匹配正则表达式“wom [ae] n"。

我们可以使用字符类指定一个字符范围。

范围使用连字符 - 字符表示。

例如, [A-Z] 表示任何大写英文字母;“[0-9]"表示0和9之间的任何数字。

表示不是。

例如, [^ ABC] 表示除A,B和C以外的任何字符。

字符类 [^ A-Z] 表示除大写字母之外的任何字符。

如果 ^ 出现在字符类中,除了开头,它只匹配一个 ^ 字符。

例如,“[ABC ^]"将匹配A,B,C或^。

您还可以在一个字符类中包含两个或多个范围。例如, [a-zA-Z] 匹配任何字符a到z和A到Z.

[a-zA-Z0-9] 匹配任何字符a到z(大写和小写)和任何数字0到9。

下表列出了字符类的示例

字符a到z

字符类含义
[abc]字符a,b或c
[^xyz]除x,y和z以外的字符
[a-z]
[a-cx-z]字符a到c或x到z,其将包括a,b,c,x,y或z。
[0-9&&[4-8]]两个范围(4,5,6,7或8)的交叉,
[a-z&&[^aeiou]]所有小写字母减元音

预定义字符类

下表列出了一些常用的预定义字符类。

预定义
字符

含义
.任何字符
\d数字。 与[0-9]相同
\D非数字。 与[^ 0-9]相同
\s空格字符。 包括与[\\ t \\ n \\ x0B \\ f \\ r]相同。
  • 空格
  • 标签
  • 换行符
  • 垂直标签
  • 表单Feed
  • 回车字符
\S非空白字符。 与[^ \\ s]相同
\w一个字符。 与[a-zA-Z_0-9]相同。
\W非字字符。 与[^ \ w]相同。

例子

以下代码使用 \d 匹配所有数字。

\\d 在字符串中用于转义 \ 

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {  public static void main(String args[]) {    Pattern p = Pattern.compile("Java \\d");    String candidate = "Java 4";    Matcher m = p.matcher(candidate);    if (m != null)      System.out.println(m.find());  }
}

上面的代码生成以下结果。

例2

以下代码 \w+ 匹配任何单词。

双斜杠用于转义 \ 

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {  public static void main(String args[]) {    String regex = "\\w+";    Pattern pattern = Pattern.compile(regex);    String candidate = "asdf Java2s.com";    Matcher matcher = pattern.matcher(candidate);    if (matcher.find()) {      System.out.println("GROUP 0:" + matcher.group(0));    }  }
}

上面的代码生成以下结果。

Java 正则表达式模式

Java正则表达式教程 - Java正则表达式模式

 java.util.regex 包含三个类,以支持正则表达式的完整版本。

  • 模式
  • 匹配
  • PatternSyntaxException

Pattern 保存正则表达式的编译形式。

Matcher 将要匹配的字符串与模式相关联,并执行实际匹配。

PatternSyntaxException 表示格式错误的正则表达式中的错误。

编译正则表达式

没有公共构造函数的模式是不可变的,可以共享。

Pattern 类包含一个静态compile()方法,它返回一个 Pattern 对象。

compile()方法是重载的。

static Pattern  compile(String regex)
static Pattern compile(String regex, int flags)

以下代码将正则表达式编译为Pattern对象:

import java.util.regex.Pattern;public class Main {public static void main(String[] args) {// Prepare a regular expressionString regex = "[a-z]@.";// Compile the regular expression into a Pattern objectPattern p = Pattern.compile(regex);}
}

compile()方法的第二个版本设置修改模式匹配方式的标志。

flags参数是一个位掩码,并在Pattern类中定义为int常量。

Flag描述
Pattern.CANON_EQ启用规范等效。
Pattern.CASE_INSENSITIVE启用不区分大小写的匹配。
Pattern.COMMENTS启用不区分大小写的匹配。...
Pattern.DOTALL允许在模式中的空格和注释。
忽略以#开头的空格和嵌入的注释,直到行的结尾。
Pattern.LITERAL启用模式的文字解析。 这个标志使元字符和转义序列作为正常字符。
Pattern.MULTILINE启用多行模式。 默认情况下,^和$匹配输入序列的开始和结束。 此标志使模式仅逐行匹配或输入序列的末尾。
Pattern.UNICODE_CASE启用支持Unicode的大小写。 与CASE_INSENSITIVE标志一起,可以根据Unicode标准执行不区分大小写的匹配。
Pattern.UNICODE_ CHARACTER_CLASS启用预定义字符类和POSIX字符类的Unicode版本。 设置此标志时,预定义字符类和POSIX字符类符合Unicode技术标准。
Pattern.UNIX_LINES启用Unix行模式。 设置此标志时,只有\ n字符被识别为行终止符。

例子

以下代码编译设置CASE_INSENSTIVE和DOTALL标志的正则表达式。

import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex   = "[a-z]@.";Pattern p  = Pattern.compile(regex,  Pattern.CASE_INSENSITIVE|Pattern.DOTALL);}
}

例2

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String args[]) {Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);String candidateString = "Java. java JAVA jAVA";Matcher matcher = p.matcher(candidateString);// display the latter matchSystem.out.println(candidateString);matcher.find(11);System.out.println(matcher.group());// display the earlier matchSystem.out.println(candidateString);matcher.find(0);System.out.println(matcher.group());}
}

上面的代码生成以下结果。

Java 正则表达式匹配 

Java正则表达式教程 - Java正则表达式匹配

Matcher 类对字符序列执行匹配通过解释在 Pattern 对象中定义的编译模式。

Pattern 类的 matcher()方法创建一个实例的 Matcher 类。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex   = "[a-z]@.";Pattern p  = Pattern.compile(regex);String str = "abc@yahoo.com,123@cnn.com,abc@google.com";Matcher  m   = p.matcher(str);}
}

匹配器的以下方法执行匹配。

  • find() method
  • start() method
  • end() method
  • group() method

find()方法

find()方法找到输入中的模式的匹配。

如果find成功,它返回true。否则,它返回false。

第一次调用 find()在输入的开始处开始搜索。下一个调用将在上一次匹配后开始搜索。

我们可以使用while循环与 find()方法来查找所有的匹配。

find()方法是一个重载的方法。find()方法的另一个版本接受一个整数参数,这是开始查找匹配的偏移量。

start()方法

find()方法返回上一次匹配的开始索引。 它在成功的find()方法调用之后使用。

end()方法

end()方法返回匹配字符串中最后一个字符的索引加一。

匹配后, str.substring(m.start(),m.end())给出匹配的字符串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex   = "[a-z]@.";Pattern p  = Pattern.compile(regex);String str = "abc@yahoo.com,123@cnn.com,abc@google.com";Matcher  m   = p.matcher(str);if (m.find())  {String  foundStr = str.substring(m.start(),  m.end());System.out.println("Found string  is:" + foundStr);}}
}

上面的代码生成以下结果。

group()方法

group()方法通过前一个成功的find()方法调用返回找到的字符串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "[a-z]@.";Pattern p = Pattern.compile(regex);String str = "abc@yahoo.com,123@cnn.com,abc@google.com";Matcher m = p.matcher(str);if (m.find()) {String foundStr = m.group();System.out.println("Found text is:" + foundStr);}}
}

上面的代码生成以下结果。

例子

import java.util.regex.Pattern;
import java.util.regex.Matcher;public class Main {public static void main(String[] args) {String regex = "[abc]@.";String source = "abc@example.com";findPattern(regex, source);}public static void findPattern(String regex, String source) {Pattern p = Pattern.compile(regex);Matcher m = p.matcher(source);System.out.println("Regex:" + regex);System.out.println("Text:" + source);while (m.find()) {System.out.println("Matched  Text:" + m.group() + ", Start:" + m.start()+ ", " + "End:" + m.end());}}
}

上面的代码生成以下结果。

Java 正则表达式量词 

Java正则表达式教程 - Java正则表达式量词

我们可以指定正则表达式中的字符的次数可以匹配字符序列。

为了使用正则表达式表达一个数字或更多的模式,我们可以使用量词。

下表列出了量词及其含义。

量词含义
*零次或更多次
+一次或多次
?一次或根本不
{m}正好m次
{m,}至少m次
{m,n}至少m,但不超过n次

量词必须遵循字符或字符类。

例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {// A group of 3 digits followed by 7 digits.String regex = "\\b(\\d{3})\\d{7}\\b";// Compile the regular expressionPattern p = Pattern.compile(regex);String source = "12345678, 12345, and 9876543210";// Get the Matcher objectMatcher m = p.matcher(source);// Start matching and display the found area codeswhile (m.find()) {String phone = m.group();String areaCode = m.group(1);System.out.println("Phone: " + phone + ", Area  Code:  " + areaCode);}}
}

上面的代码生成以下结果。

例2

匹配零个或多个 d 

import java.util.regex.Pattern;public class Main {public static void main(String args[]) {String regex = "ad*";String input = "add";boolean isMatch = Pattern.matches(regex, input);System.out.println(isMatch);}
}

上面的代码生成以下结果。

Java 正则表达式边界 

Java正则表达式教程 - Java正则表达式边界

要匹配一行的开头,或匹配整个单词,不是任何单词的一部分,我们必须为匹配器设置边界。

下表列出了正则表达式中的边界匹配器

边界匹配含义
^一行的开始
$一行的结束
\b字边界
\B非字边界
\A输入的开始
\G上一次匹配的结束
\Z输入的结束,但是对于最终终止符,如果有的话
\z输入的结束

例子

以下代码演示了如何使用正则表达式匹配字边界。

public class Main {public static void main(String[] args) {// \\b to get \b inside the string literal.String regex = "\\bJava\\b";String replacementStr = "XML";String inputStr = "Java and Javascript";String newStr = inputStr.replaceAll(regex, replacementStr);System.out.println("Regular  Expression: " + regex);System.out.println("Input String: " + inputStr);System.out.println("Replacement String:  " + replacementStr);System.out.println("New String:  " + newStr);}
}

上面的代码生成以下结果。

Java 正则表达式组

Java正则表达式教程 - Java正则表达式组

我们可以通过括号将多个字符组合为一个单位。例如,(ab)

正则表达式中的每个组都有一个组号,从1开始。

Matcher类中的方法groupCount()返回与Matcher实例相关联的模式中的组数。

组0引用整个正则表达式和不由groupCount()方法报告。

正则表达式中的每个左括号标记新组的开始。

我们可以在正则表达式中返回引用组号。

假设我们要匹配以“abc"开头,后跟“xyz"的文本,后跟“abc"。

我们可以写一个正则表达式为“abcxyzabc"。

我们可以使用反向引用将正则表达式重写为“(abc)xyz \\ 1"。 \1 指第1组,即(abc)

\2 引用组2, \3 引用组3,依此类推。

以下代码显示如何显示格式化的电话号码。在正则表达式 \b(\d{3})(\d{3})(\d{4})\b \b 表示我们感兴趣的是仅在字边界匹配十个数字。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\(\\d{3})(\\d{3})(\\d{4})\";Pattern p = Pattern.compile(regex);String source = "1234567890, 12345,  and  9876543210";Matcher m = p.matcher(source);while (m.find()) {System.out.println("Phone: " + m.group() + ", Formatted Phone:  ("+ m.group(1) + ") " + m.group(2) + "-" + m.group(3));}}
}

上面的代码生成以下结果。

例子

以下代码显示如何引用替换文本中的组。

$n ,其中 n 是组编号,替换文本内部是指组 n 的匹配文本。

例如, $1 是指第一个匹配的组。要重新格式化电话号码,我们将使用($1) $2- $3 

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\(\\d{3})(\\d{3})(\\d{4})\";String replacementText = "($1) $2-$3";String source = "1234567890, 12345, and 9876543210";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(source);String formattedSource = m.replaceAll(replacementText);System.out.println("Text: " + source);System.out.println("Formatted Text: " + formattedSource);}
}

上面的代码生成以下结果。

命名组

我们可以在正则表达式中使用命名组。

我们可以命名一个组,然后使用他们的名字来引用参考组。

我们可以在替换文本中引用组名称,并使用组名称获取匹配的文本。

定义命名组的格式为

(?<groupName>pattern)

一对括号标记一个组。开始括号后面跟着一个?和放在尖括号中的组名称。

组名称只能包含字母和数字,且只能以字母开头。

以下正则表达式具有三个命名组。

  • areaCode
  • prefix
  • postPhoneNumber

正则表达式匹配10位数的电话号码。

(?<areaCode>\d{3})(?<prefix>\d{3})(?<postPhoneNumber>\d{4})

以下代码显示如何使用命名组。

String  replacementText = "(${areaCode}) ${prefix}-${postPhoneNumber}";

我们可以混合组号和组名。

上述正则表达式可以重写如下。

String  replacementText = "(${areaCode}) ${prefix}-$3";

以下代码显示如何在正则表达式中使用组名称以及如何在替换文本中使用名称。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\(?<areaCode>\\d{3})(?<prefix>\\d{3})(?<postPhoneNumber>\\d{4})\";String replacementText = "(${areaCode}) ${prefix}-$3";String source = "1234567890 and 9876543210";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(source);String formattedSource = m.replaceAll(replacementText);System.out.println("Text: " + source);System.out.println("Formatted Text: " + formattedSource);}
}

上面的代码生成以下结果。

组边界

我们可以使用 start() end()方法来获取组的匹配边界。 这些方法重载:

int start()
int start(int groupNumber)
int start(String groupName)
int end()
int end(int groupNumber)
int  end(String groupName)

方法返回上一次匹配的开始和结束。

以下代码显示如何匹配10位电话号码,并为每个成功匹配打印每个组的开始。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\(?<areaCode>\\d{3})(?<prefix>\\d{3})(?<postPhoneNumber>\\d{4})\";String source = "1234567890, 12345, and 9876543210";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(source);while (m.find()) {String matchedText = m.group();int start1 = m.start("areaCode");int start2 = m.start("prefix");int start3 = m.start("postPhoneNumber");System.out.println("Matched Text:" + matchedText);System.out.println("Area code start:" + start1);System.out.println("Prefix start:" + start2);System.out.println("Line Number start:" + start3);}}
}

上面的代码生成以下结果。

Java 正则表达式查找/替换 

Java正则表达式教程 - Java正则表达式查找/替换

我们可以找到一个模式,并用一些文本替换,替换的文本取决于匹配的文本。

在Java中,我们可以在Matcher类中使用以下两个方法来完成这个任务。

Matcher appendReplacement(StringBuffer sb, String replacement)
StringBuffer appendTail(StringBuffer sb)

例子

假设我们有以下文本。

We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.

我们想在以下规则中将数字更改为文本。

  • 如果多于5,更换多
  • 如果小于5,请更换少量
  • 如果是1,替换为“只有一个”

更换后,上面的句子是

We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.

要找到所有数字,我们可以使用 \b\d+\b \b 标记单词边界。

以下代码显示如何使用正则表达式和appendReplacement()和appendTail()方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\\d+";StringBuffer sb = new StringBuffer();String replacementText = "";String matchedText = "";String text = "We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(text);while (m.find()) {matchedText = m.group();int num = Integer.parseInt(matchedText);if (num == 1) {replacementText = "only one";} else if (num < 5) {replacementText = "a few";} else {replacementText = "many";}m.appendReplacement(sb, replacementText);}m.appendTail(sb);System.out.println("Old  Text: " + text);System.out.println("New Text: " + sb.toString());}
}

上面的代码生成以下结果。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/422.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(实战)WebApi第10讲:Swagger配置、RESTful与路由重载

一、Swagger配置 1、导入SwashBuckle.AspNetCore包 2、在.NET Core 5框架里的startup.cs文件里配置swagger 3、在.NET Core 6框架里的Program.cs文件里配置swagger 二、RESTful风格&#xff1a;路由重载&#xff0c;HttpGet()括号中加参数 &#xff08;1&#xff09;原则&…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现&#xff0c;必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

心情追忆-AI分析报错

之前我独自开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。 项目需求来源->设计->前端(小程序)->后端->部署均由我一人完成. 上线一个月. 通过群聊分享等. 用户量也有了100多人. 我希望持续发展 由于项目的开发与测试…

Leetcode21:合并两个有效链表

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示…

【Python · Pytorch】人工神经网络 ANN(中)

【Python Pytorch】人工神经网络 ANN&#xff08;中&#xff09; 6. 反向传播6.1 梯度下降法6.1.1 线搜索方法6.1.2 微分 & 导数6.1.3 偏导数6.1.4 Jacobian矩阵6.1.5 梯度 & 梯度下降法按维度介绍 6.1.6 面临挑战平原现象 & 振荡现象局部最小值鞍点梯度消失梯度爆…

时间序列预测(十)——长短期记忆网络(LSTM)

目录 一、LSTM结构 二、LSTM 核心思想 三、LSTM分步演练 &#xff08;一&#xff09;初始化 1、权重和偏置初始化 2、初始细胞状态和隐藏状态初始化 &#xff08;二&#xff09;前向传播 1、遗忘门计算&#xff08;决定从上一时刻隐状态中丢弃多少信息&#xff09; 2、…

基于springboot+小程序的汽车销售管理系统(汽车4)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 ​ 1、管理员实现了首页、个人中心、管理员管理、基础数据管理、论坛管理、公告信息管理、汽车管理、用户管理、轮播图信息等。 ​ 2、用户实现了注册、登录、首页、汽车类型、论坛、购物…

C++ | Leetcode C++题解之第522题最长特殊序列II

题目&#xff1a; 题解&#xff1a; class Solution { public:int findLUSlength(vector<string>& strs) {auto is_subseq [](const string& s, const string& t) -> bool {int pt_s 0, pt_t 0;while (pt_s < s.size() && pt_t < t.siz…

Android Preference浅析(设置Setting)

各位&#xff0c;好久不见&#xff0c;最近时间较为充裕&#xff0c;更新一下博客。 本篇在我的理解、认识范围内&#xff0c;讲述一下Android中的Preference&#xff08;破粉斯~&#xff09;这玩意&#xff0c;常用于项目中的设置模块中。在工作中我也主要负责了设置模块相关…

双指针问题解法集(一)

1.指针对撞问题&#xff08;利用有序数组的单调性衍生&#xff09; 1.1LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09;​​​​​​ 1.1.1题目解析 有序数组&#xff0c;找到和为price的两个元素&#xff0c;只需要一个解即可。 1.1.2算法…

根据提交的二维数据得到mysql建表和插入数据实用工具

根据提交的二维数据得到mysql建表和插入数据实用工具,这是重构版本(之前有过)。 会通过数据的长度&#xff0c;类型&#xff0c;是否数字&#xff0c;是否唯一等做判断&#xff0c;且每千条一个插入语句以优化性能。 <?php //整理与分享&#xff1a;yujianyue<1505859…

数据库连接池实现

目录 前提&#xff1a;如果我要操作多个表&#xff0c;那么就会产生冗余的JDBC步骤&#xff0c;另一个弊端就是每次都需要数据库连接对象&#xff08;Connection&#xff09;&#xff0c;获取效率低下&#xff0c;每次使用时都需要先进行连接 数据库连接池的特点&#xff1a; …

JavaEE初阶------网络编程续+传输层UDP协议介绍

文章目录 1.实现翻译服务器2.TCP的socket api使用3.初识网络编程3.1开发中常见的格式3.1.1行文本方式构造3.1.2xml格式表示3.1.3json处理格式3.1.4protobuffer格式 3.2传输层3.2.1UDP报文格式3.2.2校验和的说明3.2.3校验和的计算方法3.2.3.1CRC算法3.2.3.2MD5算法 1.实现翻译服…

python的数据结构列表方法及扩展(栈和队列)

python的数据结构 python的list方法 list.append() 添加一个元素到列表末尾。list,append(num)相当于a[len(a):] [num] a [1,2,3,4,5] a.append(6) print(a) a[len(a):] [7] print(a)list.extend() 添加指定列表的所有元素。list.extend(nums)相当于a a nums a [1,2,3]…

我与Linux的爱恋:基础IO 文件描述符重定向缓冲区

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 文章目录 文件描述符文件描述符分配规则访问文件的本质 重定向原理缓冲区的理解 文件描述符 通过上述内容&#xff0c;我们知道使用 open 系统调用打开文件时&#xff0c;系…

Java每日刷题之二分算法

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 转化 通过题目时间复杂度为O(logN),我们就可以联想到二分算法&#xff0c;但是我们前面学到的算法&#xff0c;是查找出&#xff0c;有序数组里的值&#xff0c;并不是求其中的范围&a…

qt QBrush详解

1、概述 QBrush是Qt框架中的一个基本图形对象类&#xff0c;它主要用于定义图形的填充模式。QBrush可以用于填充如矩形、椭圆形、多边形等形状&#xff0c;也可以用于绘制背景等。通过QBrush&#xff0c;可以设置填充的颜色、样式&#xff08;如实心、渐变、纹理等&#xff09…

postman如何安装旧版本不升级(以9.31和11.10版本为例)

postman版本超过10.x&#xff08;包含10.x)&#xff0c;有个大的麻烦&#xff0c;就是需要登录账号&#xff0c;如果网络不佳&#xff08;其实是外网受限&#xff09;,那就很难受了 功能页面都进不去了&#xff01;而8.x /9.x等以下版本就不需要登录了。 比如9.31.30这个版本就…

线程函数和线程启动的几种不同形式

线程函数和线程启动的几种不同形式 在C中&#xff0c;线程函数和线程启动可以通过多种形式实现。以下是几种常见的形式&#xff0c;并附有相应的示例代码。 1. 使用函数指针启动线程 最基本的方式是使用函数指针来启动线程。 示例代码&#xff1a; #include <iostream&g…

Arm和高通闹翻在即,或影响骁龙 8 Elite

原文转载修改自&#xff08;更多互联网新闻/搞机小知识&#xff09;&#xff1a; Arm向高通下达最后通牒&#xff0c;骁龙 8 Elite或受影响 其实对于小江这个不咋关注安卓圈的用户来说&#xff0c;高通和Arm大概就是秤不离砣&#xff0c;砣不离秤的关系。不过在看了今天的最新…