perl - 如何在 perl 中使用 \e 元字符拆分字符串?
问题描述
我需要从分隔符可能是三个字符之一的变量中拆分字符串:
;
-或- -或,
-\e
我可以逃脱;
,但逃脱\e
让我感到不适。
数据如下:
joe@gmail.com,joe@xyz.com,joe@isp.net
fred@123.com;fred@gmail.com
suzy@yahoo.com\esuzy@abc.com
我首先匹配一些字符串,如果为真,则将数据放入数组中,并在任何分隔符匹配时拆分:
if($ax=~/abc.com|xyz.com|123.com/) {
my @addr=split /[\;,\\\e]/, $ax;
...
}
这种情况下的输出给了我:
'joe@gmail.com',
'joe@xyz.com',
'joe@isp.net'
'fred@123.com',
'fred@gmail.com'
'suzy@yahoo.com',
'esuzy@abc.com' <--- Note the 'e'
正则表达式让我感到焦虑。
解决方案
\e
不是字符,它是代表字符的转义码。如果您的文本包含字面意思\e
,那么这是两个字符,并且一个字符类(中的部分[]
)只能匹配一个字符,在这种情况下它匹配反斜杠。
您可以使用交替匹配多个任意长度的字符串:
/[;,]|\\e/
推荐阅读
- tensorflow - 张量流张量函数
- jquery - 使用jquery重置滚动动画效果
- wordpress - 如何在 Wordpress 中获取用户的订单?
- forms - 从外部销售代理处获取数据的平台/外联网建议
- android - 自动化 Android 中的行为:打开外部应用程序,截屏并返回其他应用程序
- javascript - React-scripts:无法从 dist 文件夹导入模块
- javascript - Dexie.js:导出和导入数据库给出 webpack 错误。导出不是函数
- c# - 我的加入 .NetCore 3.1 抛出关于 NavigationExpandingExpressionVisitor 的异常,那是什么?
- kdevelop - 导入基于 cmake 的 C++ 项目时,KDevelop 崩溃
- python - 为什么 PyOpenGL 渲染已删除的形状?