侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

正则表达式

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 178 阅读 / 1,512 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
通过 $0 -n 获取匹配结果

github 写的正则源码 js的
自动画出NFA图
自动画出状态机图
nfa→dfa
死循环解决
测试用例

一种将NFA到最小化DFA的方法_爱学术
文章编号 :100622475(2004)100006202 收稿日期 :20031208 作者简介 :毛红梅(19712) ,女 ,江西南昌人 ,南昌航空工业学院计算机系讲师 ,硕士 ,研究方向 :智能管理、智能计算机辅助教 学、多媒体视频点播系统。 一种将 NFA 到最小化 DFA 的方法 毛红梅1 ,聂承启2 (1. 南昌航空工业学院计算机系 ,江西 南昌  330034 ;2. 江西师范大学计算中心 ,江西 南昌  330027) 摘要 :词法分析是编译程序重要阶段 ,有效的词法分析可提高编译程序的效率。本文提出用子集方法完成 NFA 到 DFA 并使用树型分割法实现 DFA 到最小化 DFA 的化简。 关键词 :DFA(确定有穷自动机) ;NFA(不确定有穷自动机) ;最大集中图分类号 :TP301     文献标识码 :A A Method of Alteration from NFA to Minimum2state DFA MAO Hong2mei1 ,NIE Cheng2qi2(1.
https://www.ixueshu.com/document/1ac2992c2edbc0ac12b89789778c6d17318947a18e7f9386.html

正则匹配 换行 >2
\n{2}

匹配所有非img标签
<(?!img)[^>]*>([.\s]*)<\/?((?!img).)*?\/?>

把换好几行的弄成换一行的
[\n\s]{2,} \n

全部符号解释
{}默认值限定前一个字符,如abc{2,}只匹配abcc·abccc……;而(abc){2,}则会匹配abcabc·abcabcabc……


预查 (匹配但不包含)
(?:pattern) (?=pattern) 正常 , 匹配但不包含 (?!pattern) 非, 括号能匹配的都去掉。
(?=((\$|\w)+)) 替换 map._ 作用 在_开头的变量前加上map.
message(?=\(\"(.*?)\"\))

js 里使用正则
res=/.*姓名.*/;
res.test("这里面的名字会被匹配到")//只返回bool值
/正则表达式/.exec('待匹配内容') 返回数组

匹配中文
preg_match('~[\x{4e00}-\x{9fa5}]+~u', $string, $tmp)


java中
是否包含
检测全部字符串是否能被正则匹配.
boolean isMatch = Pattern.matches(pattern, content);
前提
Matcher match = Pattern.compile(".*").matcher("被匹配的");//和上一句意思效果相同
一切都围绕者这个Matcher展开。

替换 
匹配组
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
((A)(B(C)))
(A)
(B(C))
(C)
例如 ((\\D*)(\\d+)(.*)) 一共4组,第0组和第1组一样
例如 (\\D*)(\\d+)(.*) 一共3组,第0组是整个匹配结果
match.find([index]) 只找一个匹配,之后match.group(index) 可以获取匹配的组,没有分组的话index写0就是全部。
String line = "This order was placed for QT3000! OK?";
pattern = "((\\D*)(\\d+)(.*))";

Matcher m = Pattern.compile(pattern).matcher(line);

if (m.find()) {
    System.out.println("Found value 0: " + m.group(0));
    System.out.println("Found value 1: " + m.group(1));
    System.out.println("Found value 2: " + m.group(2));
    System.out.println("Found value 3: " + m.group(3));
    System.out.println("Found value 4: " + m.group(4));
    System.out.println("Found value 5: " + m.group(5));
} else {
    System.out.println("NO MATCH");
}
输出
Found value 0: This order was placed for QT3000! OK? Found value 1: This order was placed for QT3000! OK? Found value 2: This order was placed for QT Found value 3: 3000 Found value 4: ! OK? Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 5 at java.util.regex.Matcher.group(Matcher.java:538) at myCode.regex.main(regex.java:30)

matches:如果提供了参数matches,它将被填充为搜索结果。 
matches[0]将包含完整模式匹配到的文本,
matches[1]将包含第一个捕获子组匹配到的文本,以此类推。 
flags:flags可以被设置为以下标记值:PREG_OFFSET_CAPTURE 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。 offset:通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。 返回值:preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为 preg_match()在第一次匹配后 将会停止搜索。 preg_match_all()不同于此,它会一直搜索subject直到到达结尾。 如果发生错误 preg_match()返回 FALSE。

0

评论区