[非版务置顶]正则表达式学习贴,搜集各类典型正则问题。 - "请勿灌水"

兔子-顾问 2010-12-04 10:02:30
加精

1.本帖长期有效,专门搜集各类正则表达式可以解决的问题,并在本帖中进行点评。
2.讨论不限语言(c#/vb.net/java/c++/php/linux/...均可)
3.本帖是正则表达式新手学习贴、提问贴、高手pk贴、问题研究贴。不解答与正则无关问题,如有问题,可以从顶楼开始搜索是否有类似问题问过,我会定期查阅搜集在1楼。
4.为营造一个良好的学习、讨论的氛围,所以请不要回复:顶、支持、威武、很好、学习等本帖无关内容,如果认为本帖想关注,可以加入点击顶楼右上角:“+收藏”保留。
(楼主是vb.net版主,所以发在vb.net板块,方便删除灌水和无关回复)
5.本着共同学习的目的开帖,请大家不要破坏氛围,帖子内禁止任何不文明回复。

6.期待csdn能开正则表达式版块,正则无用论、正则不是一个专门技术的说法我选择无视,只希望有个地方可以讨论。爱好正则最主要是其精炼的语法和包含的强大逻辑性。
-------------------

同好互助,共同提高。
感谢您的理解,欢迎您的参与。


感谢大家支持,但请留意第四条,不要让技术贴被灌水淹没了,再次感谢大家的支持和理解。谢谢。

为营造一个良好的学习、讨论的氛围,
请不要回复:顶、支持、威武、很好、学习等本帖无关内容
如果认为本帖想关注,可以加入点击顶楼右上角:“+收藏”保留。
...全文
14164 227 打赏 收藏 转发到动态 举报
写回复
用AI写文章
227 条回复
切换为时间正序
请发表友善的回复…
发表回复
a95297488 2013-02-26
  • 打赏
  • 举报
回复
学习下.学习下.
thunor 2013-02-13
  • 打赏
  • 举报
回复
请问如果我要选择(X)的内容,但X代表的只能是数字和非数字的组合(谁开始不一定),而文档内有很多的X是纯数字我怎么来实现? [\((][\u4e00-\u9fa5\d\S][^\))|]+?[\))]可以选择出X大于等于10的内容来。我怎么改写?谢谢!
zhanshijjp 2012-11-22
  • 打赏
  • 举报
回复
https://passport.csdn.net/account/active?user=zhanshijjp&active=6c88d56ad29b65b487fa4192b442ba3c
wangyd324 2012-11-12
  • 打赏
  • 举报
回复
mark
快乐乔巴 2012-11-07
  • 打赏
  • 举报
回复
我咋不知道这好帖呢 正在深入学习正则 很强大
0802023028 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 的回复:]

悲催
昨天写了老长 结果发帖失败

正则30分钟入门教程(q107770540提供)的作者是deerchao童鞋的,为了尊重作者,最好加上
推荐iregex.org这个博客。作者也是个正则的达人,并且对正则灰常热衷

关于搜集文章,不知道大家用google alert不,如果用,订阅个:正则 正则表达式 regex regular expression 这个组关键字不错的。。

……
[/Quote]

这个博客写的文章我也看过,我学习正则就是从这篇文章开始的。
shenrongze 2012-08-15
  • 打赏
  • 举报
回复
支持支持~~~~~~
「已注销」 2012-07-24
  • 打赏
  • 举报
回复
Java未了解过
fanhtqd 2012-04-26
  • 打赏
  • 举报
回复
身份证严格验证
var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }
function isCardID(sId) {
var iSum = 0;
var info = "";
if (!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误";
sId = sId.replace(/x$/i, "a");
if (aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法";
sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
var d = new Date(sBirthday.replace(/-/g, "/"));
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "身份证上的出生日期非法";
for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
if (iSum % 11 != 1) return "你输入的身份证号非法";
return true; //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}
jygongweibin 2012-03-22
  • 打赏
  • 举报
回复
2008对正则表达式的功能已经改进了
MSDN811914 2012-01-08
  • 打赏
  • 举报
回复
斑竹,上面问题我用下面的方法解决,但是>=和>如何让区分, 谢谢!!!
((\b+\-?\d+\.?\d+)|(\.?\d+))\b|\b\w+|[-+]|[*/]|,|[<>]|[>=]|[<=]|[()]|\b+
MSDN811914 2012-01-08
  • 打赏
  • 举报
回复
斑竹,上面问题我用下面的方法解决,但是如3.6改为.3则有问题,自己显示出3,我想提出的为.3或0.3
谢谢!!!
\b+\-?\d+\.?\d+\b|\b\w+|[-+]|[*/]|,|[()]|\b+
MSDN811914 2012-01-08
  • 打赏
  • 举报
回复
斑竹您好:有麻烦您了,谢谢!!!
我想用\b来分割字符串(但小数作为一个数),如:
CROSS(ZIG(3.5,10+3),REF(ZIG(3.6,10*(cl+3)),1))
我想分割成:
cross
(
zig
(
3.5
,
10
+
3
)
,
REF
(
ZIG
(
3.6
,
10
*

cl
+
3
)
)
,
1
)
)
zhai59991021 2011-12-31
  • 打赏
  • 举报
回复
【求一个简单的【正则表达式】】稍微会点正则表达式的请来帮个忙
<a class="unline" href="javascript:;" onclick="ListManager.selectCategory('其他精品','c6e4cbfbbeabc6b7');QZBlog.Util.Statistic.sendPV('classname_click', 'rizhi.qzone.qq.com');return false;" title="其他精品">其他精品</a>] 

<a href="javascript:;" class="blog_link" onclick="ListManager.selectBlog(1294550455);return false;">

<span title="听说,七夕要到了、、 -- 发表于2011-01-09 13:20">





<em class="c_tx4">[顶]</em>



<span id="blogtitle_1294550455" >

听说,七夕要到了、、

</span>

</span>




<a class="unline" href="javascript:;" onclick="ListManager.selectCategory('文件共享','cec4bcfeb9b2cfed');QZBlog.Util.Statistic.sendPV('classname_click', 'rizhi.qzone.qq.com');return false;" title="文件共享">文件共享</a>] 

<a href="javascript:;" class="blog_link" onclick="ListManager.selectBlog(1291613569);return false;">

<span title="C语言程序设计经典100例,会用到的 -- 发表于2010-12-06 13:29">





<em class="c_tx4">[顶]</em>



<span id="blogtitle_1291613569" >

C语言程序设计经典100例,会用到的

</span>

</span>


[size=30px]要就是例子就是上面两截,还有好多这种结构的,希望用正则表达式匹配出来,匹配段源码如下:
[/size]

catchs = New Regex("<a(.*)selectCategory([.\n]*)selectBlog([.\n]*)</span>", System.Text.RegularExpressions.RegexOptions.IgnoreCase) 
mc = catchs.Matches(strHtml)

[size=30px]这是我写的,调试发现明显不对:
<a(.*)selectCategory([.\n]*)selectBlog([.\n]*)</span>[/size]
my328420969 2011-12-06
  • 打赏
  • 举报
回复
好贴收藏之
我de名字 2011-11-07
  • 打赏
  • 举报
回复
受教了
兔子-顾问 2011-11-03
  • 打赏
  • 举报
回复
你前面如果一定带那么多,这样可以试试
Dim mc As MatchCollection = Regex.Matches(yourStr,"(?<=<tr onMouseOver=this.style.backgroundColor='93FFFF' onMouseOut=this.style.backgroundColor='ffffff' height=""20"">((?!</tr)[\s\S])*?)((?!</tr)[^\r\n])+")
for each m in mc
'm.Value是你要的
next
兔子-顾问 2011-11-03
  • 打赏
  • 举报
回复
是对的。你具体要什么?贴出原文,贴出要的内容,用换行分开。看不懂,匹配结果是对的。
MSDN811914 2011-11-03
  • 打赏
  • 举报
回复
请斑竹看看:我想取得一个网页里固定字符串中间的所有字符,该如何写,谢谢!!!
<tr onMouseOver=this.style.backgroundColor='93FFFF' onMouseOut=this.style.backgroundColor='ffffff' height="20">
上面为第一个字符串
下面为第二个字符串
</tr>

谢谢!!!

huangwenquan123 2011-11-03
  • 打赏
  • 举报
回复
现在才知道这个好帖,要不是顾问发到群里我都还不知道。

加载更多回复(98)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧