怎么写正则表达式

该工单存在上一工单:[undo_lgc_line, 10800107423122, undo_lgc_line_link, 10800107423122, undo_lnk_lgc_link_component, 10800107423122, undo_lnk_phy_link_component, 10800107423122]
必须先归档前面的工单后,才能归档当前工单,归档失败

这里中文都是固定格式的,关键是抓取表的名字 以及10口头的数字,谢谢。注意当中的空格。

如果工单在其它数据中,需要两次匹配,第一次先匹配工单,然后再匹配工单中的表格和数字

如果全是工单数据,则只要匹配一次工单中的表格和数字

我给你一个php语言的分两次匹配的例子,你看看吧(正则表达式是两个斜杠中间的部分,第一次匹配取第一捕获组的数据,第二次匹配取第一和第二捕获组的数据)

<?php

$str = "该工单存在上一工单:[undo_lgc_line, 10800107423122, undo_lgc_line_link, 10800107423122, undo_lnk_lgc_link_component, 10800107423122, undo_lnk_phy_link_component, 10800107423122]必须先归档前面的工单后,才能归档当前工单,归档失败";

preg_match_all('/该工单存在上一工单:\[(.+?)\]必须先归档前面的工单后,才能归档当前工单,归档失败/',$str,$s);

for ($i=0; $i<count($s[1]); $i++) {

 preg_match_all ('/([a-z_]+),\s*(10[0-9]+)/', $s[1][$i], $matches);

 for ($j=0; $j<count($matches[1]); $j++) {

  echo "table=".$matches[1][$j]." number=".$matches[2][$j]."\n";

 }

}

?>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-14

1、至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符:

 /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/ 

其中 [\s\S] 中的\s空白符,\S非空白符,所以[\s\S]是任意字符。也可以用 [\d\D]、[\w\W]来表示。

2、至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数字字母):

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

3、至少8个字符,至少1个字母,1个数字和1个特殊字符:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$

4、至少8个字符,至少1个大写字母,1个小写字母和1个数字:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

5、至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}

6、最少8个最多十个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}

第2个回答  2019-02-27
1、正则表达式,又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
第3个回答  2019-02-27
(?!\[)\d?\S*[\da-zA-Z]

匹配结果:

共找到 8 处匹配:
undo_lgc_line
10800107423122
undo_lgc_line_link
10800107423122
undo_lnk_lgc_link_component
10800107423122
undo_lnk_phy_link_component
10800107423122

第4个回答  2019-02-27
哪些是表的名字?追问

undo_lgc_line undo_lgc_line_link undo_lnk_lgc_link_component undo_lnk_phy_link_component 这几个是表名 我要抓取这个表的名字 表名是小写a-z字母加下划线组成的。

追答

表名也没有规律啊,只是知道小写字母+下划线而已。。。

追问

等于没说