各种正则

http://blog.youkuaiyun.com/xeroo/article/details/593755
在各种常用的工具中,
正则表达式如此的相似却又不同。
下表列出了一些常用的正则表达式,以及其不同之处。
项目总多,遗漏必有不少,请各位看官不吝指出。
以perl的正则为基准,不同的用法以粉红色标出。
(xhchen8018@yahoo.com.cn)
(注意这里的斜杠都写反了)
1. sed awk grep 不支持\w \d之类的元字符,但是支持+,*的操作

grep 2.5.1 egrep 2.5.1 sed 3.02
sed 4.07
awk 3.1.1 perl 5.8.0 vim 6.1 JavaScript ??
转义///////
行头^^^^^^^
行尾$$$$$$$
n个/ /或/ 仅定义 --posix 或 --re-interval有效(要表达}和 没有定义--posix或--re-interval时,不能用的语法, /}/{同义 / 
 ****或/*, (要表达*,得用//*)***
 /++/++或/+, (要表达+, 得用//+)+/++
 /??/??或/?, (要表达?, 得用//?)?/??
任意字符.... 含/n.. /s修饰后则含/n. 除/n. 除/n
(pat) 匹配并获结果/(pat/)(pat)/(pat/)(pat)或/(pat/) (要表达括号,用//( //) )(pat)/(pat/)(pat)
(?:pat) 匹配但不获结果不支持不支持不支持不支持(?:pat)不支持(?:pat)
(?=pat) 等于预查不支持不支持不支持不支持(?=pat)不支持(?=pat)
(?!pat) 不等预查不支持不支持不支持不支持(?!pat)不支持(?!pat)
| 或/||/||或/| (要表达|,得用//|)|/||
其中任意字符[xyz][xyz][xyz][xyz][xyz][xyz][xyz]
[.ch.] [=ch=]不支持不支持[.ch.]不支持不支持不支持不支持
单词边界 /b/b/b/b不支持/b不支持/b
非单词边界 /B/B/B/B不支持/B不支持/B
单词左右边界 <>/< />/< />/< />不支持 (><和/>/<和//>//<同义不支持(><和/>/<同义/< />不支持(><和/>/<同义
控制字符 /cx不支持不支持/cx不支持/cx不支持/cx
数字/d不支持不支持不支持不支持/d/d/d
非数字/D不支持不支持不支持不支持/D/D/D
换页 /f不支持不支持高版本支持/f/f另义 /f表示文件名字符/f
换行 /n不支持不支持不支持/n/n/n/n
回车 /r不支持不支持/r/r/r/r/r
空白 /s不支持不支持不支持不支持/s/s/s
非空白 /S不支持不支持不支持不支持/S/S/S
制表符 /t不支持不支持高版本支持/t/t/t/t
垂直制表符 /v不支持不支持高版本支持/v/v另义 /v表示very magic/v
单词字符 /w [A-Za-z0-9_]/w/w/w不支持/w/w/w
非单词字符 /W [^A-Za-z0-9]/W/W/W不支持/W/W/W
/xn 16进制不支持不支持高版本支持/xn/xn另义 /x表示[0-9A-Za-z]/xn
/n 八进制不支持不支持不支持/n/n不支持/n
/n 后向引用/n/n/n/n 仅取结果可用/n/n 仅取结果可用/n
[:alnum:] 字母和数字[:alnum:][:alnum:][:alnum:][:alnum:][:alnum:][:alnum:]不支持
[:alpha:] 字母[:alpha:][:alpha:][:alpha:][:alpha:][:alpha:][:alpha:]不支持
[:cntrl:] 控制字符[:cntrl:][:cntrl:][:cntrl:][:cntrl:][:cntrl:][:cntrl:]不支持
[:digit:] 数字[:digit:][:digit:][:digit:][:digit:][:digit:][:digit:]不支持
[:graph:] 可打印字符(不含空格)[:graph:][:graph:][:graph:][:graph:][:graph:][:graph:]不支持
[:lower:] 小写[:lower:][:lower:][:lower:][:lower:][:lower:][:lower:]不支持
[:print:] 可打印字符(含空格)[:print:][:print:][:print:][:print:][:print:][:print:]不支持
[:punct:] 标点[:punct:][:punct:][:punct:][:punct:][:punct:][:punct:]不支持
[:space:] 空格[:space:][:space:][:space:][:space:][:space:][:space:]不支持
[:upper:] 大写字母[:upper:][:upper:][:upper:][:upper:][:upper:][:upper:]不支持
[:xdigit:] 16进制数字[:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:]不支持
[:return:]不支持不支持不支持不支持不支持[:return:]不支持
[:tab:]不支持不支持不支持不支持不支持[:tab:]不支持
[:escape:]不支持不支持不支持不支持不支持[:escape:]不支持
[:backspace:]不支持不支持不支持不支持不支持[:backspace:]不支持
### PyTorch中的正则化方法 #### L2 正则化 (权重衰减) L2 正则化通过在损失函数中加入权重参数平方和的惩罚项,使得模型训练过程中倾向于选择更小的权重值。这有助于减少过拟合现象的发生。 ```python import torch import torch.nn as nn import torch.optim as optim model = YourModel() optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) ``` 上述代码展示了如何利用 `weight_decay` 参数来启用 L2 正则化[^1]。 #### L1 正则化 不同于 L2 正则化,L1 正则化是在损失函数上增加权重绝对值之和作为惩罚项。这种类型的正则化能够促使一些不重要的连接权值变为零,从而实现自动化的特征选择功能。 为了手动添加 L1 正则化到损失计算过程: ```python l1_lambda = 0.001 l1_norm = sum(p.abs().sum() for p in model.parameters()) loss = loss_fn(output, target) + l1_lambda * l1_norm ``` 这段代码片段说明了怎样自定义地向总损失中引入 L1 惩罚因子[^5]。 #### Dropout 方法 Dropout 是一种简单而有效的技术,在每次更新期间随机丢弃一部分神经元节点,以此模拟多个稀疏架构并增强泛化能力。它不是严格意义上的正则化形式,但在实践中被广泛视为如此。 ```python class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(in_features, hidden_size) self.dropout = nn.Dropout(p=dropout_prob) self.fc2 = nn.Linear(hidden_size, out_features) def forward(self, x): x = F.relu(self.fc1(x)) x = self.dropout(x) x = self.fc2(x) return x ``` 此部分描述了一个简单的网络结构实例,其中包含了 dropout 层的应用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值