通过 $0 -n 获取匹配结果
github 写的正则源码 js的
自动画出NFA图
自动画出状态机图
nfa→dfa
死循环解决
测试用例
正则匹配 换行 >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。
评论区