关于正则表达式问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于正则表达式问题相关的知识,希望对你有一定的参考价值。

<span class="sheader_red" style="font-weight: bolder">216,369,470</span> 我怎么样获取 216,369,470 这个数字呢? 正则表达式怎么写?
有一个需要提醒一下 216,369,470 这个数字是变化的

参考技术A 第一段话:
比如对字符串
xxxxyyzzzxyzxyzzzz123
1.用
[xyz]*zzz这个贪婪表达式去匹配的时候
正则引擎的走法是先根据贪婪来匹配[xyz]*
由于一直符合字符xzy来组成,所以正则游标一直走到
xxxxyyzzzxyzxyzzzz,然后对后面的zzz做判断,发现后面是数字1,游标回溯,退到
xxxxyyzzzxyzxyzzz,再匹配zzz,发现后面z满足,但数字1不满足,再回溯,
退到
xxxxyyzzzxyzxyzz,发现后面是zz1,还是不满足zzz,再回溯,退到
xxxxyyzzzxyzxyz,这下发现后面是zzz了,符合[xyz]*zzz,ok,报告找到了
xxxxyyzzzxyzxyzzzz
2.用
[xyz]*?zzz这个非贪婪正则去匹配的时候,首先
找到x,看后面是不是zzz,不是,继续
找到xx,看后面是不是zzz,不是,继续
找到xxx,看后面是不是zzz,不是,继续
...
找到xxxxyy,看后面,发现是zzz,ok,报告找到了
xxxxyyzzz
注:当然这是由于有2个zzz地方,造成结果不同,如果在符合条件情况下,只有1处zzz,结果是一样的。根据实际情况来选取贪婪和非贪婪。

第二段话:
如果是一个循环查找比如java里面Matcher的while(m.find()),比如还是xxxxyyzzzxyzxyzzzz123
正则表达式([xyz]*?)zzz或者是([xyz]*?)(?:zzz)或者是([xyz]*?)(zzz)这种找“一串以zzz结尾的xyz组成的字符串”
第一轮正则判断找到xxxxyyzzz或者第一匹配组的xxxxyy之后,游标停在zzz后面
下一轮再找的时候,从zzz后面开始,找到xyzxyzzzz或者第一匹配组的xyzxyz
但如果是预查找([xyz]*?)(!=zzz) 这里用的是有,你那个是无,但仅仅意思相反,道理一样。这个第一轮找到xxxxyy,“游标在zzz前面”!第二轮从zzz前面开始找,找到zzzxyzxyz。

额。就这么个意思,不知道能帮到你不。
悬赏分:5分。。。
5分。。。
分。。。
以上回答你满意么?追问

我只要 关于我的回答就好。。 直接告诉我 这个怎么用正则 216,369,470 这个数字是变化的

参考技术B ([\d,]+)
提示答案太简单,补点废话。

关于正则表达式 1 2之类的问题

我们创建一个正则表达式
var RegExp = /^(123)(456)\2\1$/;
这个正则表达式匹配到的字符串就是
123456456123
创建另外第二正则表达式
var RegExp1 = /^(123)(456)\1$/;
这个正则表达式匹配到的字符串是
123456123
创建另外第三正则表达式
var RegExp1 = /^(123)(456)\2$/;
这个正则表达式匹配到的字符串是
123456456


这个\1 \2...... 都要和正则表达式集合()一起使用
简单的说就是
\1表示重复正则第一个圆括号内匹配到的内容
\2表示重复正则第二个圆括号内匹配到的内容





以上是关于关于正则表达式问题的主要内容,如果未能解决你的问题,请参考以下文章

关于正则表达式 1 2之类的问题

关于浮点数的正则表达式?

关于grep后跟多个正则查询条件的问题

[原创]关于正则表达式

关于正则表达式的5个小贴士

关于正则表达式和通配符区别