懂正则表达式的请进,几个简单的问题,谢谢!

作者&投稿:丙庾 (若有异议请与网页底部的电邮联系)
一个关于‘正则表达式’的问题,高手请进来帮忙看下。~

<%

str="[upload=zip,test.zip]down.asp?ID=888[/upload]"

set reg = new RegExp

reg.Pattern= "\[upload=(.+),(.+)\.(.+)\](.+)\[\/upload\]"
reg.Global = True

filename = reg.Replace(str,"$2") & "." & reg.Replace(str,"$3")
filelink = reg.Replace(str,"$4")

response.write "" & filename & ""

%>

比如说要在内容里查找 非TUE,那开头的三个字母明显是TUE,但是我如果将开头的第三个字符分开看呢 如T!=TUE ,U!=TUE,E!=TUE。这样也能通过啊。所以正则匹配 非 是行不通的。所以只能用算法实现你 的功能了
以下是我java代码版的实现(经过测试没问题)
/****************************************/
//要处理的内容
String con = "TUE$AM$OPD 阿萨德撒 THU$AM$OPD SAT$AM$OPD 7.1啊实打实 SUN$AM$OPD";
//先得到将要被替换的内容 用==号分割
String con2= con.replaceAll("(TUE|AM|OPD|\\$)+", "==");
String []sa = con2.split("==");
StringBuilder p2_sb = new StringBuilder();
//用将要被替换的内容组装成一个正则
for(String ts:sa){
p2_sb.append(ts).append("|");
}
String p2_str = p2_sb.toString();

//去掉正则首尾的 |
if(p2_str.charAt(0)=='|'){
p2_str=p2_str.substring(1,p2_str.length()-1);
}else{
p2_str=p2_str.substring(0,p2_str.length()-1);
}
//需要得到的内容
String con_val = con.replaceAll(p2_str, "");
System.out.println(con_val);

第一、1024-65535区间整数的正则表达式。

(?<!\d)(?:6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[2-9]\d{3}|1[1-9]\d\d|103\d|102[4-9])(?!\d)

本正则式是分段验证的,详细如下。

6553[0-5]|  #65530-65535

655[0-2]\d|  #65500-65529

65[0-4]\d{2}|  #65000-65499

6[0-4]\d{3}|  #60000-64999

[1-5]\d{4}|  #10000-59999

[2-9]\d{3}|  #2000-9999

1[1-9]\d\d|  #1100-1999

103\d|   #1030-1039

102[4-9]  #1024-1029

如果将1024段放在前面,则无法正确匹配60000段。因为最左端的匹配优先实现,后面的匹配没有机会满足。

前面加(?<!\d),后面加(?!\d),是为了避免匹配像123456中的前4位1234或后四位3456,将数字串作为整体匹配。

加(?...)是为了提高效率。

第二、3-32位字符的正则表达式。

.{3,32}

第三、5-20位数字的正则表达式。 

\d{5,20}



1. /^102[4-9]|10[3-9]\d|1[1-9]\d\d|[2-9]\d\d\d|[1-5]\d\d\d\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5]$/
2. /^.{3,32}$/

1.不建议全用正则,可以组合一下.
比如
先使用 [1-9][0-9]* 判断是否为大于0的自然数
再用if条件语句判断
2.
.{3,32}
其中.表示除开换行符等的任意字符,如果要表示任意字符,可以用[\s\S]
3.
[1-9][0-9]{4,19}
不以0开头

第一个。。。。实在是。。。。不能用程序判断么?
第二个我理解你说的字符是所有内容,包括空格 .{3,32}
第三个 \d{5,20}

1. /^102[4-9]|10[3-9]\d|1[1-9]\d\d|[2-9]\d\d\d|[1-5]\d\d\d\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5]$/
2. /^.{3,32}$/
3. /^\d{5,20}$/


请问正则表达式里如何--递进数值
二楼说得对,不是没有人回答对,而是正则表达式就无法完成你说的这项任务,另外我们叫它自加,而不是递进。如果你学过任何一门编程语言,你的需求就是最简单的i++的问题。以c语言为例:声明变量int i=0 替换处填[i++]即可。要替换abd这种,声明变量char i=a 替换处填[i++]即可 但是正则...

细说JavaScript正则表达式(RegExp)
正则表达式有两种主要方法,分别是exec()和test()。然而,还有用于正则表达式的字符串的其他方法,比如match()、matchAll()、replace()、replaceAll()、search()和split()。从这里开始将探索可用于JavaScript正则表达式的不同方法,在文章《JavaScript正则表达式的5个方法》介绍了一些,本文就不重复介绍了。exec() 此方法执...

正则表达式实现上下行缩进一致,对齐(看说明)
试下这个:首先查找内容:\\b>\\s*<\\b之后将查找的内容替换 >\\R < 其实IDE中Tab, Shift+Tab配合缩进一般都是ok的吧

如何使用正则表达式进行长度检查
楼主试试这个:^(?=.{5,50}$)[a-zA-Z0-9]+[_|\\_|\\.|\\w]*@[a-zA-Z0-9]+[_|\\_|\\.|\\w]*\\.[a-zA-Z0-9]+ 如果你用的编译环境支持环视的话应该可以。

怎样使用正则表达式对注册表进行验证
正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式目的 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2. 可以通过正则表达式,从字符串...

正则表达式高级替换,匹配后进行运算,然后使用结果替换,怎么实现?
你的要求可以用php语言或Python语言实现,因为它们的preg_replace_callback(Python用sub)函数参数中可以使用回调函数,这样对处理你提的问题比较简便,其它语言也可以处理,但就比较麻烦.按照你的要求编写的Python程序如下 import re def fun(matches):return matches[1]+str(eval(matches[2]))s="adfadfd,...

python如何用正则表达式匹配两个字符串之间的字符串中的某个字符并进 ...
你好,匹配和替换是两个操作,你可以分两步来做。第一步匹配:hit=re.search(“(\\<question\\>\\)”,inputstr)第二步替换 result=re.sub(‘”’,‘\\”’,inputstr)

正则表达式替换<xxx>尖括号 高手进
“有的正则表达式引擎,专门针对这种嵌套提供了支持。并且在栈空间允许的情况下,能够支持任意未知层次的嵌套:比如 Perl,PHP,GRETA 等。”如果支持递归(?R)的话,表达式可以参考:\/<((?>[^<>]+)|(?R))*>\/

如何将正则表达式的结果进行反选,以便删除不要的字符呢?
编辑器的话,用上面正则实现选取后,再用反向选取即可 如果是编程里,就无法反向选取

javascript进阶知识4-正则表达式
关于正则表达式,我收藏的一篇帖子讲得很好、很全,但是我没有学得很好,哈哈。 这里附上链接:https:\/\/blog.csdn.net\/h610443955\/article\/details\/81079439 (本文有部分直接借鉴的那篇文章的例子和文字)1.正则表达式的创建 字面量:letreg=\/\\d\/g对象形式:letreg=newRegExp('\\\\d','g');console.log(reg)\/\/\/...

铜山县15390348421: 编译原理,正则表达式的低级基础问题 -
燕雯生血: 1、正则表达式:0(0|1)*1 2、由于不方便画图,最简DFA用状态表表示如下: (1)开始状态S------输入0------->状态A (2)状态A-------输入0-------->状态A (3)状态A-------输入1-------->状态B(可接受状态) (4)状态B-------输入0-------->状态A (5)状态B-------输入1-------->状态B(可接受状态)

铜山县15390348421: java 正则表达式一个简单的问题 -
燕雯生血: public static void main(String[] args) { String s ="001011010101010101011"; s =s.replaceAll("[^0]",""); System.out.println(s.length()); } 只统计个数的话...就这么来也可以

铜山县15390348421: 正则表达式 小问题 -
燕雯生血: (必须和)配对,但是\(无需任何东西和它配对,在正则表达式里面\(和A这样的普通字符没有任何区别,都是匹配指定的符号.

铜山县15390348421: 正则表达式的一些问题,帮忙分析下 -
燕雯生血: 第一个式子:^(0|[0-9][0-9]?|100)$ ^表示字符串的开头,|表示或,0|[0-9][0-9]?|100表示0或者[0-9][0-9]?或者100,最开始的0是多余的.[0-9][0-9]? 中[0-9]表示数字0到9任意一个字符,第二个[0-9]?后面的问号表示第二个[0-9]可以没有,所以[0-...

铜山县15390348421: 正则表达式的小问题,求大神解答,谢谢 -
燕雯生血: /;\s/g这是一个Javascript语言的正则表达式/xxx/中的/表示定界符,是分割Javascript正则表达式与Javascript正则表达式属性的边界;就是匹配字符分号本...

铜山县15390348421: 正则表达式问题 -
燕雯生血: 要精确匹配的话,要用到正则分组的概念的.但也看你是用什么编程语言进行正则匹配的.<br><br>最重要的是看你要进行匹配的字符串的内容<br><br>就你上面的问题,可以使用正则表达式的“贪婪与懒惰”匹配来实现,在默认情况下,正则...

铜山县15390348421: 初学正则表达式,一个小问题.大侠们帮忙解决
燕雯生血: '/(2[0-9]{3}|[0-9]{2})-(1[0-2]|[1-9])-([12]?[0-9]|3[01])/' 用这个试一下. 你原来的那个可以匹配:9999-99-99

铜山县15390348421: 正则表达式的问题 -
燕雯生血: ^(.{4,10})$ 这是第一个表达式少于4或者大于10的字符都不匹配.第二个不知道字符要求是不是跟第一个一样,是的话把4,10改为6,16 大小写默认就是有区别的

铜山县15390348421: 一个关于正则表达式的问题 -
燕雯生血: \d表示匹配十进制数,相当于[0-9]{6}表示数字是有六位*表示数字(因为你写的是\d*,就是数字了)可以有也可以没有,就是对位数没限制.^表示是匹配行首,$表示匹配行尾.

铜山县15390348421: 一个正则表达式基础知识问题 -
燕雯生血: 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网