正则表达式菜鸟,正则 菜鸟
C#,正则表达式菜鸟问题,关于"?"号.
*? 或 +? 表示非贪婪模式
例如用 \w+ 去匹配 "abcdefg" ,可以匹配到完整的"abcdefg",因为正则表达式默认是使用贪婪匹配,即能匹配多长的就返回多长的,但加上?后只能匹配 "a" ,因为 "a"是满足\w+的最短长度
菜鸟求正则表达式
建议把例外筛选放到应用中实现
import re
excepts = ['127.0.0.1','0.0.0.0']
patt = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', re.I|re.X)
content = r'brd 127.255.255.255/23 scope 127.0.0.1/2 2.2.2.2/4 0.0.0.0/4 host lo'
print [ip for ip in patt.findall(content) if ip not in excepts]
pythonw -u "baidu.py"
['127.255.255.255', '2.2.2.2']
Exit code: 0 Time: 4.415
关于正则表达式的菜鸟问题!关于 ^ 和 \b 怎么感觉两者都是一样的...何解...
^的意思是以其后的字符为开始
\b的意思是该字符的前或者后为空格或者标点
举例来说 ^abc ?和\babc ? ?如字串“abcd” 和字串"James abc" "James,abc" 匹配结果如下
菜鸟求助解释一句正则表达式
写正则表达式的人水平不高,简单的功能写出复杂杂的在复杂不过了的表达式
以上正则和这个正则等效
[\w/]*
也就是
var result=str.match(/[\w/]*/g);
((\w+)\/)\1*\2*
解释
\w代表匹配一个任意数字字母和中文字符加下划线
+代表\w重复匹配一次以上
(\w+)加个括号,代表把匹配到的上面字符放在分组里,这里从左向右数为第二个分组
\2代表对前面匹配到的分组2的引用。也就是(\w+)分组匹配到的字符的引用,前面匹配到a,后面\2也就是a
*代表重复引用零次以上。零,可以没引用。
\1代表对前面最外层分组((\w+)\/)的引用。同理,*代表可以重复任意次。
菜鸟提问正则表达式还有 if else
1,建议你先将你定义的变量都给打印出来看一下
2,if [[ "$n1" =~ "$re" ]]; 方括号和双引号看看使用的有没有什么问题,还有就是单引号的使用
一般来说单引号会见引号中的东西都给转义了,所以引号使用要特别小心
一步一步去定位,不能急,这也是学习的过程。以后再遇到相似问题你就知道怎么定位了。
这个地方我怀疑你定义的$re有问题
修改为下面这个表达式试一下:
if("$n1"=~"[0-9]+")