regex - 如何提取冒号前的字符串?
问题描述
如何提取冒号前的字符串。我不想要冒号后面的字符串。
样本输入:
asfmqwdbd/ilcp:dftqclk_rep
期望的结果:
asfmqwdbd/ilcp
我的代码:
if (m/^(\S+))
$inst_name = $1;
解决方案
假设分号 ( ;
) 是问题中的拼写错误,而您实际上的意思是冒号 ( :
),这将是正确的正则表达式:
- 锚点在行首 (
^
) - 捕获一个或多个非冒号字符 (
([^:]+)
) - 匹配必须以冒号 (
:
)结尾
#!/usr/bin/perl
use warnings;
use strict;
while (<DATA>) {
print "$1\n" if /^([^:]+):/;
}
exit 0;
__DATA__
asfmqwdbd/ilcp
asfmqwdbd/ilcp:dftqclk_repasfmq
asfmqwdbd/ilcp;dftqclk_repasfmq
测试运行:
$ perl dummy.pl
asfmqwdbd/ilcp
推荐阅读
- sql - 使用 %TYPE oracle 更改表添加列
- c++ - 如何在派生类数据中使用基类进行比较
- spring - IBM MQ 最大连接数
- linux - 用于心跳和 vrrp_sync_group 的 Keepalived 专用网络
- java - 如何更改/重构方法以将 FileInputStream 用于本地文件以及 InputStream 用于使用 Java 1.8 的 URL?
- c# - 如何在 WPF 中使用 MVVM 在页面和打开的窗口之间导航?
- sql - 动态添加状态值的 SQL 查询
- amazon-web-services - 用户:x 无权执行:(sts:DecodeAuthorizationMessage)`
- reactjs - 在子组件中调用调度函数时 Redux 语法混乱
- reactjs - 如果使用反应组件,是否可以使用内联?