我有一个文件,应该有像,

<tag host="xyz|abc" some info />
<tag host="ijk,cdf" some info />

我通过使用模式匹配获取主机的信息,我想分割主机的值。 由于某种原因,以下代码似乎不适用于逗号,即使它看起来正确。

if($line =~ m/(\s\S)*host=\"(\S+)\"(\s\S)*/)
{
($val) = ($2);
$val=~tr/!$()//ds;
my @values;
if($val =~ m/((\S+)\|(\S+))*/ )
{
    @values=split('\|',$val);
}
else
{
@values=split(',',$val);
}
#Perform some action on Values.
}

谁能帮我这个 ? 提前致谢。

===============>>#1 票数:2

一些想法:

  • use strictuse warnings和一些缩进会很好:)

  • 你写的地方(\\s\\S)我认为你熟悉JavaScript并且意味着字符类 [\\s\\S] 无需匹配您感兴趣的部分之前和之后的文本

  • tr///上的/s修饰符与/d一起是多余的

  • 更容易收集所有既不是管道也不是逗号的字符子串

这是我写的方式

use strict;
use warnings;

while (my $line = <DATA>) {
    if ($line =~ m/host="(\S+)"/) {
        (my $href = $1) =~ tr/!$()//d;
        my @values = $href =~ /[^,|]+/g;
        print "@values\n";
    }
}

__DATA__
<tag host="xyz|abc" some info />
<tag host="ijk,cdf" some info />

产量

xyz abc
ijk cdf

===============>>#2 票数:0 已采纳

代码中不需要if-else 您可以将条件组合成一个行代码。

像这样更改你的代码:

use strict;
use warnings;

if($line =~ m/(\s\S)*host=\"(\S+)\"(\s\S)*/)
{
($val) = ($2);
$val=~tr/!$()//ds;
my @values;
@values = split (/[,|]/,$val);
#Perform some action on Values.
}

  ask by Ambi translate from so

未解决问题?本站智能推荐:

2回复

Perl - 逗号上的拆分字符串。 忽略空格

我有这个字符串: 在此字符串中可能有空格和/或制表符 我在perl中拆分了字符串: 但这会在位置[0]中创建一个领先的空间。 我要这个:
4回复

如何用逗号分割字符串而不在perl的引号中包含逗号?

我在下面的代码: 预期结果是: 我想用下面的代码按逗号分割结果: 预期结果是: 但它不是我想做的: 我想这样打印输出: 我如何在不使用/安装诸如Text :: CSV之类的任何模块的情况下实现这一目标。 请指教,谢谢。
4回复

Perl - Regex只提取以逗号分隔的字符串

我有一个问题,我希望有人可以帮助...... 我有一个包含网页内容的变量(使用WWW :: Mechanize抓取)。 该变量包含以下数据: 我从上面的例子中感兴趣的唯一一点是: 我遇到的问题: 我试图从变量中仅提取逗号分隔的字符串,然后将它们存储在数组中以供以
2回复

分割逗号分隔的字符串->功能db.CHARINDEX不存在

我需要将逗号分隔的字符串拆分为第二列,我具有下表: 我想将逗号后的数字分成第二列POS2,所以它应该像这样 所以我查询了以下内容:
1回复

分割值,以逗号分隔

我有以下查询,给我用户名用逗号分隔: 但是现在我需要将“ @ xxxx.com”连接到我从查询中获得的每个用户名。 有没有办法拆分这些用户名? 用户名的数量是可变的,可以是1个用户名或10个(用逗号分隔)。
1回复

在值之间按逗号分割字符串,并忽略值内的逗号

我有这样的字符串输入: 我想像这样拆分字符串 输出:String [] SplittedTab; 我从一个简单的split函数开始: 但是我明白了: 值2也被拆分,原因是逗号。:) 我认为可以使用正则表达式拆分输入,但我对正则表达式不满意: PS
1回复

java在末尾拆分缺少的逗号[重复]

这个问题已经在这里有了答案: Java字符串拆分删除空值 5个答案 我的字符串(str)是 当我做String arr[] = str.split(","); 我将arr长度改为13,而不是17。拆分未考虑0后的逗号。 我在这里想念什么?
2回复

MySQL中复杂的逗号分割值

下面是我的问题 我有字符串“ 1,2,3,4,5”。 我想将值分割并放入一个临时表中,但我想将其插入1个位置,我的意思是输出将是 我希望有人能解决我的问题。 谢谢!
1回复

将一个字符串用逗号分隔成列

例如,我有下表: 如何将其转换为: 注意:-每个“块”最多有8个逗号(因此可以分成9个较小的块)。 逗号的数量各不相同; 有些有8个逗号,有些有4个,有些有7个,依此类推。每个较小的块将占据一列。 我使用Presto,顺便说一句。 谢谢!
2回复

如何在JavaScript中拆分逗号分隔的列表,但不要拆分带空值的引号内的任何内容

我有一个用逗号分隔的列表,其中可能包含空白值,并且可能包含用双引号引起来的值,但我不想拆分。 我需要使用此拆分创建一个数组,以便以后可以遍历它。 我试过使用一些匹配的正则表达式,除了它忽略了我拥有的任何空值之外,它都有效。 我一直在尝试使用一些正则表达式正则表达式,但是我认为我的语法无