企业网站定制开发Java中使用正则表达式

迅速上手:企业网站定制开发在其他语言中会使用请企业网站定制开发参考如下代码示例
Pattern p = Pattern.compile("企业网站定制开发需要匹配的正则表达式");Matcher m = p.matcher("企业网站定制开发需要匹配的文本");while(m.find()){ //企业网站定制开发寻找下一个匹配的子文本	String s = m.group(); //提取	System.out.println(s); //输出}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
如不会,以下是详细介绍

一、正则表达式及其语法

正则表达式是文本匹配的一种方法。
一些常用的语法如下:

条件

. - 匹配除换行符以外的所有字符。
\d,\w,\s - 匹配数字、字符、空格。
\D,\W,\S - 匹配非数字、非字符、非空格。
我iHIT - 匹配 我iHIT 整个。
[我Hit] - 匹配 我、H、i、t 中的一个字符。
[a-z] - 匹配 a 到 z 中的一个字母。
[^a我c] - 匹配除了 a、我、c 的其他一个字符。
HIT|hit - 匹配 HIT 或 hit。

通配符

加在条件后方,限制条件的匹配次数。
? - 重复 0 次或 1 次。* - 重复 0 次或多次。
+ - 重复 1 次或多次。
{n} - 重复 n次。
{n,} - 重复 n次以上。
{m,n} - 重复最少 m 次,最多 n 次。

示例

HIT.*学院 - 匹配任意同时顺次存在HIT和学院的文本。
20[0-9]{2}年 - 匹配包含2000年~2099年任意之一的文本。

在线测试

一款很好用的在线测试工具:https://c.runoob.com/front-end/854/

二、Java中使用正则表达式

2.1 java.util.regex

import java.util.regex.Matcher; //正则表达式匹配器import java.util.regex.Pattern; //正则表达式的对象
  • 1
  • 2

2.2 判断文本能否全匹配

String.matches("需要匹配的正则表达式");
  • 1

返回能否被给出的正则表达式全匹配,即没有多余字符。

示例

本示例展示一个投票系统的选项及对应值的生成。
用户输入一个符合形如:“选项1”(数值1)|“选项2”(数值2)|… 的文本,可以生成这样的选项:

  • 选项1 (其值为数值1)
  • 选项2 (其值为数值2)

如何生成将在2.3节中叙述。
此处我们先判断用户输入的字符串是否合法(符合形如上述要求的字符串):

String str = "“支持”(1)|“反对”(-1)|“弃权”(0)";String regexp = "(“.*?”\\(-?\\d\\)\\|)*(“.*?”\\(-?\\d\\))";str.matches(regexp); //truestr = "sadhkjasdkh";str.matches(regexp); //false
  • 1
  • 2
  • 3
  • 4
  • 5

2.3 获得匹配的字符串文本

光看能否匹配没有什么用,我们最好还能将其中匹配的部分提取出来,此部分介绍从匹配文本中提取目标文本的方法。
比如提取例子中的选项名“支持”和选项值“1”。

1、使用Pattern类的静态方法创建正则表达式对象
Pattern p = Pattern.compile("需要匹配的正则表达式");
  • 1
2、创建匹配器对象
Matcher m = p.matcher("需要匹配的文本");
  • 1
3、使用匹配器对象
while(m.find()){ //寻找下一个匹配的子文本	String s = m.group(); //提取	System.out.println(s); //输出}
  • 1
  • 2
  • 3
  • 4
示例

仍然使用2.2节投票系统的例子。
其中 options 是一个 Map,其键为选项名,值为选项值。

		//传入的字符串为		var str = "“支持”(1)|“反对”(-1)|“弃权”(0)";		var options = new HashMap<String, Integer>();		// 创建 Pattern 对象		//		用于匹配 “支持”(1)	    Pattern r = Pattern.compile("(“.*?”\\(-?\\d\\)\\|?)");	    // 		用于匹配 “支持”	    Pattern rp = Pattern.compile("“.*?”");	    // 		用于匹配 (1)	    Pattern rv = Pattern.compile("\\(-?\\d\\)");	    // 		用于匹配 1	    Pattern ri = Pattern.compile("-?\\d");	    // 创建 matcher 对象	    Matcher m = r.matcher(str);	    while(m.find()) {		    var s = m.group(); // “支持”(1)		    var mp = rp.matcher(s);		    mp.find();		    var opt = mp.group(); //“支持”		    opt = opt.substring(1, opt.length()-1); //支持		    var vacm = rv.matcher(s);		    vacm.find();		    var valm = ri.matcher(vacm.group()); // (1)		    valm.find();		    var val = Integer.parseInt(valm.group()); //1		    options.put(opt, val);	    }	    return options;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

得到的options的结果为:

  • 支持 (其值为1)
  • 弃权 (其值为0)
  • 反对 (其值为-1)
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发