使用正则表达式进行匹配
2017-11-03 11:07
337 查看
用m//进行匹配
m//可以任意符号作为定界符 与qw类似 而使用//可以省略m经常使用花括号{}作为定界符
#模式匹配修饰符
要写在//后面 如//i //s等
/i大小写无关匹配
/s匹配任意字符 点号“.”原本不匹配换行符,/s可使点号匹配任何字符
/x忽略空格,方便阅读
如/-?[0-9]+.?[0-9*]/不方便阅读
若使用/x 则/-? [0-9]+ .? [0-9*]/x
或\
-?
[0-9]+
.?
[0-9]*
\x
#组合选项修饰符
连在一起写在末尾 如//isx
#锚位
正则默认从字符串开头读取,若未匹配成功,则会在下一个字符继续尝试
“\A”绝对开头读取
“\Z”绝对末尾读取
且都不会继续尝试
#单词锚位
每个单词的锚位
#绑定操作符=~
之前正则表达式只能匹配默认变量_everything=~/ / 可匹配任何变量
#模式中的内插
#捕获变量
在用括号捕获字符串后,可以用 12 34 等变量表示出来
$_="hello my,neighbor" if(/(\s+)(\s+),(\s+)/){ print"words are $1 $2 $3"; #结果为hello my neighbor }
#捕获变量的存活期
只有在匹配成功后才会覆盖掉之前匹配的值,若失败则不会改变
$cap="123"; $cap=~/([0-9]+)/; #匹配成功 $1等于123 $cap=~/([a-zA-Z])+/; #匹配失败 $1不改变 还是123
#不捕获模式
若不需要捕获变量,仅为了分组为整体字符串
可以写为(?:内容) 来表示不需要捕获
#命名捕获
因通过12 3不容易分辨,则可以给捕获组命任意名字写法为(?<名字>捕获内容)而提取变量时写法为+{名字}
#自动捕获变量
三个无需括号捕获的“免费”提取变量
分别是 &
$' 匹配区间中的内容存到 $& 内 匹配区间前的内容存到 $内
匹配区间后的内容存到 $’ 内
#通用量词
之前提到过 * + ? 这三个量词,若不满足使用则
还有一种量词 花括号{}
{3}表示为只能出现三次
{3,}表示为能出现三次或三次以上
{,3}表示为能出现三次或三次以下
#优先级
操作优先级
#模式测试程序
while(<>){
chomp;
if(/匹配内容/){
print”|‘<&>$’|\n”;
}else{
print”no match”;
}
}
以上这个程序可以检测字符串能否被匹配以及在什么位置上被匹配
匹配位置在尖括号< >
8f71
中
相关文章推荐
- idea 使用正则表达式 进行匹配替换
- python里使用正则表达式的边界符进行匹配
- 使用正则表达式,进行批量修改字符串中的匹配内容
- php进阶:使用正则表达式进行匹配
- iOS App开发中Objective-C使用正则表达式进行匹配的方法
- 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类
- 使用正则表达式匹配进行文件类名的更改并且去除注释
- 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类
- 正则表达式中的匹配,替换,切割,获取,这四个使用时具体用哪一个,进行案例分析
- 如何使用JavaScript和正则表达式进行数据验证
- VS.net IDE中,使用正则表达式进行查找、替换
- python:用正则表达式进行电子邮箱地址匹配
- PowerShell中使用正则表达式跨行匹配字符串的方法
- 使用“正则表达式”,匹配任意一个字符(中文,英文和标点或特殊字符)
- 使用Hive的正则表达式匹配数据时为NULL
- android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
- Qt中使用正则表达式返回匹配的所有结果集
- 路径变量中使用正则表达式匹配
- JavaScript 使用正则表达式进行表单验证的示例代码
- 使用正则表达式进行xml数据验证