分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

Java正则表达式学习:
因为正则表达式是一个很庞杂的体系,此例仅举些入门的概念,更多的请参阅相关书籍及自行摸索。

// 反斜杠
/t 间隔 ('/u0009')
/n 换行 ('/u000A')
/r 回车 ('/u000D')
/d 数字 等价于[0-9]
/D 非数字 等价于[^0-9]
/s 空白符号 [/t/n/x0B/f/r]
/S 非空白符号 [^/t/n/x0B/f/r]
/w 单独字符 [a-zA-Z_0-9]
/W 非单独字符 [^a-zA-Z_0-9]
/f 换页符
/e Escape
/b 一个单词的边界
/B 一个非单词的边界
/G 前一个匹配的结束

^为限制开头
^java     条件限制为以Java为开头字符
$为限制结尾
java$     条件限制为以java为结尾字符
. 条件限制除/n以外任意一个单独字符
java..     条件限制为java后除换行外任意两个字符

加入特定限制条件「[]」
[a-z]     条件限制在小写a to z范围中一个字符
[A-Z]     条件限制在大写A to Z范围中一个字符
[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符
[0-9]     条件限制在小写0 to 9范围中一个字符
[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符
[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)

[]中加入^后加再次限制条件「[^]」
[^a-z]     条件限制在非小写a to z范围中一个字符
[^A-Z]     条件限制在非大写A to Z范围中一个字符
[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符
[^0-9]     条件限制在非小写0 to 9范围中一个字符
[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)

在限制条件为特定字符出现0次以上时,可以使用「*」
J*     0个以上J
.*     0个以上任意字符
J.*D     J与D之间0个以上任意字符

在限制条件为特定字符出现1次以上时,可以使用「+」
J+     1个以上J
.+     1个以上任意字符
J.+D     J与D之间1个以上任意字符

在限制条件为特定字符出现有0或1次以上时,可以使用「?」
JA?     J或者JA出现

限制为连续出现指定次数字符「{a}」
J{2}     JJ
J{3}     JJJ
文字a个以上,并且「{a,}」
J{3,}     JJJ,JJJJ,JJJJJ,???(3次以上J并存)
文字个以上,b个以下「{a,b}」
J{3,5}     JJJ或JJJJ或JJJJJ
两者取一「|」
J|A     J或A
Java|Hello     Java或Hello

「()」中规定一个组合类型
比如,我查询<a href=/"index.html/">index</a>中<a href></a>间的数据,可写作<a.*href=/".*/">(.+?)</a>

在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:
Pattern Pattern.compile(String regex, int 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'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。

view plaincopy to clipboardprint?
01.抛开空泛的概念,下面写出几个简单的Java正则用例:   
02. 
03.◆比如,在字符串包含验证时   
04. 
05.//查找以Java开头,任意结尾的字符串   
06.Pattern pattern = Pattern.compile("^Java.*");   
07.Matcher matcher = pattern.matcher("Java不是人");   
08.boolean b= matcher.matches();   
09.//当条件满足时,将返回true,否则返回false   
10.System.out.println(b);   
11. 
12. 
13.◆以多条件分割字符串时   
14.Pattern pattern = Pattern.compile("[, |]+");   
15.String[] strs = pattern.split("Java Hello World Java,Hello,,World|SUN");   
16.for (int i=0;i<strs.length;i++) {   
17.    System.out.println(strs[i]);   
18.}   
19. 
20.◆文字替换(首次出现字符)   
21.Pattern pattern = Pattern.compile("正则表达式");   
22.Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");   
23.//替换第一个符合正则的数据   
24.System.out.println(matcher.replaceFirst("Java"));   
25. 
26.◆文字替换(全部)   
27.Pattern pattern = Pattern.compile("正则表达式");   
28.Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");   
29.//替换第一个符合正则的数据   
30.System.out.println(matcher.replaceAll("Java"));   
31. 
32. 
33.◆文字替换(置换字符)   
34.Pattern pattern = Pattern.compile("正则表达式");   
35.Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World ");   
36.StringBuffer sbr = new StringBuffer();   
37.while (matcher.find()) {   
38.    matcher.appendReplacement(sbr, "Java");   
39.}   
40.matcher.appendTail(sbr);   
41.System.out.println(sbr.toString());   
42. 
43.◆验证是否为邮箱地址   
44. 
45.String str="ceponline@yahoo.com.cn";   
46.Pattern pattern = Pattern.compile("[//w//.//-]+@([//w//-]+//.)+[//w//-]+",Pattern.CASE_INSENSITIVE);   
47.Matcher matcher = pattern.matcher(str);   
48.System.out.println(matcher.matches());   
49. 
50.◆去除html标记   
51.Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);   
52.Matcher matcher = pattern.matcher("<a href="/" mce_href="/""index.html/">主页</a>");   
53.String string = matcher.replaceAll("");   
54.System.out.println(string);   
55. 
56.◆查找html中对应条件字符串   
57.Pattern pattern = Pattern.compile("href=/"(.+?)/"");   
58.Matcher matcher = pattern.matcher("<a href="/" mce_href="/""index.html/">主页</a>");   
59.if(matcher.find())   
60.System.out.println(matcher.group(1));   
61.}   
62. 
63.◆截取http://地址   
64.//截取url   
65.Pattern pattern = Pattern.compile("(http://|https://){1}[//w//.//-/:]+");   
66.Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");   
67.StringBuffer buffer = new StringBuffer();   
68.while(matcher.find()){                
69.    buffer.append(matcher.group());          
70.    buffer.append("/r/n");                
71.System.out.println(buffer.toString());   
72.}   
73.          
74.◆替换指定{}中文字   
75. 
76.String str = "Java目前的发展史是由{0}年-{1}年";   
77.String[][] object={new String[]{"//{0//}","1995"},new String[]{"//{1//}","2007"}};   
78.System.out.println(replace(str,object));   
79. 
80.public static String replace(final String sourceString,Object[] object) {   
81.            String temp=sourceString;      
82.            for(int i=0;i<object.length;i++){   
83.                      String[] result=(String[])object[i];   
84.               Pattern    pattern = Pattern.compile(result[0]);   
85.               Matcher matcher = pattern.matcher(temp);   
86.               temp=matcher.replaceAll(result[1]);   
87.            }   
88.            return temp;   
89.}   
90. 
91. 
92.◆以正则条件查询指定目录下文件   
93. 
94.//用于缓存文件列表   
95.        private ArrayList files = new ArrayList();   
96.        //用于承载文件路径   
97.        private String _path;   
98.        //用于承载未合并的正则公式   
99.        private String _regexp;   
100.          
101.        class MyFileFilter implements FileFilter {   
102. 
103.            /**  
104.               * 匹配文件名称  
105.               */   
106.            public boolean accept(File file) {   
107.                try {   
108.                  Pattern pattern = Pattern.compile(_regexp);   
109.                  Matcher match = pattern.matcher(file.getName());                  
110.                  return match.matches();   
111.                } catch (Exception e) {   
112.                  return true;   
113.                }   
114.            }   
115.            }   
116.          
117.        /**  
118.        * 解析输入流  
119.        * @param inputs  
120.        */   
121.        FilesAnalyze (String path,String regexp){   
122.            getFileName(path,regexp);   
123.        }   
124.          
125.        /**  
126.        * 分析文件名并加入files  
127.        * @param input  
128.        */   
129.        private void getFileName(String path,String regexp) {   
130.            //目录   
131.              _path=path;   
132.              _regexp=regexp;   
133.            File directory = new File(_path);   
134.            File[] filesFile = directory.listFiles(new MyFileFilter());   
135.            if (filesFile == null) return;   
136.            for (int j = 0; j < filesFile.length; j++) {   
137.                files.add(filesFile[j]);   
138.            }   
139.            return;   
140.            }   
141.      
142.        /**  
143.         * 显示输出信息  
144.         * @param out  
145.         */   
146.        public void print (PrintStream out) {   
147.            Iterator elements = files.iterator();   
148.            while (elements.hasNext()) {   
149.                File file=(File) elements.next();   
150.                    out.println(file.getPath());      
151.            }   
152.        }   
153. 
154.        public static void output(String path,String regexp) {   
155. 
156.            FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);   
157.            fileGroup1.print(System.out);   
158.        }   
159.      
160.        public static void main (String[] args) {   
161.            output("C://","[A-z|.]*");   
162.        }

http://blog.csdn.net/pilou5400/archive/2010/12/08/6062477.aspx

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block var foo = 'bar'; 

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt&ThinSpace;.\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

ganttdateFormat  YYYY-MM-DDtitle Adding GANTT diagram functionality to mermaidsection 现有任务已完成               :done,    des1, 2014-01-06,2014-01-08进行中               :active,  des2, 2014-01-09, 3d计划一               :         des3, after des2, 5d计划二               :         des4, after des3, 5d
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

Android 正则表达式相关推荐

  1. android 正则表达式3,含有至少3个字符类型的android正则表达式

    我想在包含至少3个类型的字符从这种类型的android正则表达式:含有至少3个字符类型的android正则表达式 Number, upper letter, lower letter and spec ...

  2. Android正则表达式(shou手机与身份证)

    Android正则表达式(手机与身份证) 手机好号正则表达式: <span style="font-size:18px;">/*** 验证手机格式*/public st ...

  3. Android 正则表达式实例

    editText正则表达式的使用 检查输入是否符合规则 import Android.app.Activity; import android.os.Bundle; import android.vi ...

  4. 【开发笔记】Android 正则表达式 密码验证

    一.android 密码验证的正则表达式 /*** 密码验证的正则表达式 (6-16位字母和数字组合)* ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$* - ...

  5. Android正则表达式匹配字符串

    在应用开发过程中,经常会碰到要检索出某个字符串中特定格式的字符,比如说微博@**被标记为蓝色,聊天时"[微笑]"被解析为表情等等,这就用到了正则表达式. 规则可以查阅http:// ...

  6. Android 正则表达式

    1.相关知识链接 正则表达式语法   https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.80).aspx 正则表达式入门教程   http: ...

  7. Android 正则表达式- 检查字符串是否为电子邮件

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过 ...

  8. Android 正则表达式- 只保留字母数字

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过 ...

  9. Android 正则表达式验证手机和邮箱格式是否正确

    demo例子: package it.com.cc; import java.util.regex.Matcher; import java.util.regex.Pattern; import an ...

  10. Java / Android 正则表达式判断是否为手机号码

    在开发中有时会有这样的需求,就是判断用户输入的手机号码是否正确,这里最好是使用正则表达式来解决. 下面是提供一个大致思路,作为学习和参考吧,具体一些场景和特例可能也没考虑到, 贴出一个电话号码检查的工 ...

最新文章

  1. Flash正式成为Googel Chrome浏览器内置插件
  2. Windows 10 下 Anaconda3 (Python 3.8) 配置 OpenCV-4.4.0
  3. BM39 序列化二叉树
  4. EntityFramework Core如何映射动态模型?
  5. 我们究竟还要学习哪些Android知识?满满干货指导
  6. 小米荣耀互怼:头部高管们神仙打架 到底谁是谁非?
  7. python mpi多线程_使用 MPI for Python 并行化遗传算法
  8. 如何使用百度云人脸识别服务(V3版接口python语言) (九)批量向人脸库中添加人脸
  9. 使用免费软件Emu8086学习汇编
  10. Java配置环境变量32位
  11. Delphi另一个多线程函数:BeginThread用法
  12. Houdini工程文件合集
  13. C语言在链表里存储线段,C语言链表详解课件.ppt
  14. 《自己动手写cpu》读书笔记
  15. 常州2021高考成绩查询,2021江苏常州高考选课分班情况(数据)
  16. Visio2010中设置线为直线
  17. openstack rally安装失败后折腾一遭
  18. 2g内存装什么系统好电脑2g内存适合装什么系统
  19. mysql 创建触发器(for each row解释)
  20. Eclipse debug调试下按钮变灰

热门文章

  1. Adobe Flash Player 不是最新版本
  2. kindle DXG 安装多看
  3. scrapy框架初识
  4. SEO的日常主要工作做哪些
  5. 电子计算机的核心部件是哪三个,电子计算机三大核心部件 是什么
  6. 2021计算机组装视频,2021年做影视后期电脑配置单推荐PR AE软件视频后期电脑组装...
  7. MOEA/D-RDG 2016 阅读笔记
  8. 心形函数表达式及合成思路
  9. C语言:字符串转为long long --- atoll函数
  10. 14565B简单使用教程