`

正则表达式整理一

阅读更多

一、正则表达式的元字符

 
元字符 说明 备注
^ 代表行的开始 ^abc匹配以abc为开头的行
$ 代表行的结束 abc$匹配以abc为结尾的行

[字符组]

[]

匹配若干字符之一
  • [abc]表示匹配a或者b或者c。
  • -连字符表示一个范围,[a-zA-Z]匹配字母。如果想把连字符在字符组内作为一个正常的字符,必须放在最前面[-a-z]
  • 在字符组内的字符除了连字符,其他都不是元字符。例如[*+?]表示匹配* + ?字符中的一个
  • ^表示匹配一个未列出的字符  [^a-z0-9]。表示匹配除a-z和0-9之间的字符。^必须放在开头
| 表示或的关系
  • cat|dog表示匹配cat或者dog。
  • 或的字符范围是以括号为限制的。例如^cat|dog表示的匹配^cat或者dog。^(cat|dog)
. 匹配任意字符  
\< 单词的起始位置 \<cat 以cat开始的单词
\> 单词的结束为止 cat\>以cat结尾的单词
\ 转义字符 \*表示就是匹配*。不作为元字符使用
\b 单词分界符  
\d 数字[0-9]
  • 匹配数字        
  • \D表示匹配非数字
\s 匹配空白
  • 包括空格、tab、换行、回车  
  • \S表示匹配非空白
\w 匹配包括下划线的任何单词字符
  • 类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
  • \W匹配任何非单词字符。

 

 二、量词

元字符 说明 备注
* 0-无穷 a*表示匹配0个到多个a字符
? 0-1 可以不出现,也可以出现
+ 1-无穷 至少出现一次
{min,max} min-max 能够出现的容许范围是min-max   例如{3,,6}
{n} n 固定出现的次数
{min,} 至少出现的次数  
{0,max} 至多出现的次数  

 

三、反向引用

可以匹配与先前部分匹配的同样的文本。正则表达式可以记忆先前匹配的文本。

例如匹配重复的单词,例如 the the

([a-zA-Z]+)\s\1

当然可以出现多个括号,引用的顺序是以开括号从左向右就行的,例如([a-z]+)([A-Z])\s+\1\2

四、问号关联的元字符

环视结构不匹配字符,匹配特定位置

 
元字符 说明 备注
(?:xxx) 分组但是不捕获  
(?=xxx) 肯定顺序环视 子表达式可以匹配右侧的文本
(?!=xxx) 否定顺序环视 子表示式不能匹配右侧的文本
(?<=xxx) 肯定逆序环视 子表达式可以匹配左侧的文本
(?<!xxx) 否定逆序环视 子表达式不能匹配左侧的文本

 

五、示例

 1、提取javadoc的标签和值

标签都是以@开头的,而且标签的key为字母、数字、下划线、连接符组成。然后是空白。然后是value值

value值得模式为非@符合、非换行符。

 

public class TagParser
{
	private static final Pattern pattern = Pattern.compile("@([\\w-]+)\\s+([^@\\r\\n]+)");
	private List<Pair> tags = new ArrayList<Pair>();

	public void parse(String content)
	{
		tags.clear();
		Matcher matcher = pattern.matcher(content);
		while (matcher.find())
		{
			Pair p = new Pair();
			p.key = matcher.group(1);
			p.value = matcher.group(2);
			tags.add(p);
		}
	}

	public List<Pair> getTags()
	{
		return Collections.unmodifiableList(this.tags);
	}

	public static final class Pair
	{
		private String key;
		private String value;

		public String getKey()
		{
			return key;
		}

		public String getValue()
		{
			return value;
		}

	}
}

 2、为数字插入逗号分隔符

 

例如数字123456789可读性比较差,插入逗号123,456,789.

此时需要匹配位置,这个位置的左边存在数字,右边数字的个数是3的倍数。

初始定的正则表达式为:(?<=\d)(?=(\d\d\d)+)。但是运行的时候结果为1,2,3,4,5,6,789。因为右边始终是3的倍数的

修改表达式为:(?<=\d)(?=(?:\d\d\d)+$)         这个位置的左边存在数字,右边数字的个数是3的倍数,然后是结尾。

 

分享到:
评论

相关推荐

    正则表达式整理汇总(参考学习)

    正则表达式整理汇总,含以下内容 [1]里面在包括一个正则表达式测试小程序 RegexTester.exe [2]正则表达式30分钟入门教程.pdf] [3]正则表达式规则.doc [4]正则表达式30分钟入门教程.mht 自己整理用的,现在...

    正则表达式转换工具

    1. **正则表达式基本概念** - 元字符:如`.`, `*`, `+`, `?`, `{}`, `[]`, `\`, `^`, `$`等,它们具有特殊含义,在正则表达式中用来定义模式。 - 字符类:例如`[abc]`,匹配其中任意一个字符。 - 量词:`*`, `+`,...

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...

    正则表达式入门与提高---整理版_VBa_正则式_

    正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取特定模式。在VBA(Visual Basic for Applications)环境中,正则表达式可以极大地增强你在Excel、Word等Office应用中的数据处理能力。...

    常用正则表达式汇总(文档).txt

    主要为大家分享了最全的常用正则表达式大全,包括校验数字、字符、一些特殊的需求...所以我最近把开发中常用的一些正则表达式整理了一下,包括校验数字、字符、一些特殊的需求等等。给自己留个底,也给朋友们做个参考。

    Java正则表达式_动力节点Java学院整理

    Java正则表达式是Java语言中的一种模式匹配技术,用于匹配、查找、替换和判断字符串。它是一种强大的工具,能够帮助开发者快速处理字符串相关的任务。 什么是正则表达式? 正则表达式是一种特殊的字符串,用于描述...

    c#正则表达式整理验证数据和邮箱

    1. **正则表达式基础** - **基本元素**:包括字符(如a-z)、元字符(如.、^、$等)和量词(如*、+、?、{n}、{n,}、{n,m})。 - **边界匹配**:^表示行首,$表示行尾,\b表示单词边界,\B表示非单词边界。 - **...

    CSharp正则表达式整理备忘

    CSharp正则表达式整理备忘,有简单代码示例,比较完整。

    正则表达式学习资料整理

    正则表达式(Regular Expression,简称regex)是一种用于匹配字符串的强大工具,广泛应用于文本处理、数据验证、搜索和替换等场景。在这个“正则表达式学习资料整理”中,我们主要探讨的是如何理解和运用正则表达式...

    正则表达式大全.txt

    根据提供的文件信息,我们可以归纳出一系列与正则表达式相关的知识点。这些知识点涵盖了不同类型的正则表达式的构建方法及其用途,对于理解和应用正则表达式非常有帮助。 ### 正则表达式概述 正则表达式(Regular ...

    Excel VBA 正则表达式视频教程

    014_正则表达式之“或”实例1.wmv 015_正则表达式之“或”实例2.wmv 016_正则表达式之分组应用.wmv 017_正则表达式之分组应用2.wmv 018_正则表达式之分组应用3.wmv 019_正则表达式之非捕获数组应用.wmv 020_正则...

    基于正则表达式的文本抽取软件

    【基于正则表达式的文本抽取软件】是一款由个人开发者用Java编程语言编写的软件,主要功能是利用正则表达式的强大匹配能力,帮助语言工作者、外语教师和学生进行文本的高效处理和信息提取。在现代信息化社会,面对...

    C#正则表达式完全手册

    正则表达式由一个或多个字符文字、操作符或构造组成,可用于定义复杂的文本匹配规则。该文档作为一个手册,提供了快速参考的各个部分,覆盖了字符转义、字符类、锚点、分组构造、量词、后向引用、选择构造、替换以及...

    常用正则表达式整理收集

    ### 常用正则表达式整理收集 正则表达式是进行文本匹配与处理的强大工具,在编程领域中被广泛应用于字符串搜索、替换等场景。本文档将对一系列常用的正则表达式进行整理和总结,并解释其含义及应用场景。 #### 1. ...

    常用正则表达式(经验积累)

    根据提供的标题、描述以及部分内文,我们可以整理出一系列与正则表达式相关的知识点,这些知识点主要涵盖了在软件开发过程中常见的验证和匹配需求。 ### 常用正则表达式 #### 1. 匹配中文字符 **正则表达式**: `[\...

    asp.net\C#正则表达式整理+\C#正则表达式整理 .doc

    ### 一、C#中的正则表达式简介 正则表达式是一种强大的文本处理工具,用于模式搜索、替换以及提取等操作。在C#中,正则表达式的实现主要依赖于`.NET Framework`中的`System.Text.RegularExpressions`命名空间,该...

    大量的正则表达式代码

    根据给定的信息,我们可以整理出一系列常用的正则表达式及其用途。正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中进行字符串搜索、替换等操作。下面将详细介绍这些正则表达式的功能和应用场景。 ...

    C#正则表达式整理备忘

    C#正则表达式整理备忘 (1) “@”符号 “@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的...

    python专题——正则表达式[整理].pdf

    - 使用 `|` 分隔多个选择项,正则表达式会尝试匹配其中任意一个。 - `( )` 用于创建捕获组,捕获的子匹配可以使用反向引用(`\n`,n 为组号)来引用。 - `(?: )` 创建非捕获组,避免保存匹配项到缓冲区。 7. **...

    正则表达式之道.doc

    《正则表达式之道》是一本介绍正则表达式使用方法的书籍,作者Steve Mansour。正则表达式,简称“RE”或“regex”,是一种强大的文本处理工具,用于匹配和处理符合特定模式的字符串。它由普通字符和元字符组成,通过...

Global site tag (gtag.js) - Google Analytics