Perl正则表达式无法选择带有特殊字符$的单词

卡尔提克(Karthik)SV

我试图将字符串拆分为多个单词(其中一个单词具有特殊字符$),但是拆分无效。我想将下面的字符串拆分为“测试”“ Str $ ing”

$test = "Test Str$ing";

my @words = split(" ",$test);

print "@words";

print "-------1End------------\n";


foreach my $str (split /(\s)+/, $test) {        
    print "$str\n";
}

print "-------End------------\n";

我执行了上面的代码,并得到了下面的结果,如您所见,第二个单词在那里只有一半:

Test Str
-------1End------------
Test

Str
-------End------------

有什么帮助吗?

马克·里德

在Perl中,双引号字符串中的美元符号会触发插值。所以这个任务:

$test = "Test Str$ing";

设置$test为字符串,Test Str后跟变量的值$ing如果$ing未设置(并且您没有启用约束,这将导致程序在此时失败),则结果为just Test Str

要获得字面的美元符号,您必须使用反斜杠将其转义,或者使用单引号代替:

$test = "Test Str\$ing";
# or
$test = 'Test Str$ing';

#!无论如何,无论如何,程序的第一行应该是use strict;然后,Perl会捕捉到这些错误并将其炸掉,而不是让您默默地射击自己。为了达到良好的效果,您还应该添加use warnings;

#!/usr/bin/env perl
use strict;
use warnings;

$test = "Test Str$ing";

观察当我尝试运行以上命令时会发生什么:

Global symbol "$test" requires explicit package name (did you forget to declare "my $test"?) at foo.pl line 5.   
Global symbol "$ing" requires explicit package name (did you forget to declare "my $ing"?) at foo.pl line 5.
Execution of foo.pl aborted due to compilation errors.

您的程序应该看起来更像这样,只需进行最小的更改即可通过:

#!/usr/bin/env perl
use strict;
use warnings;

my $test = 'Test Str$ing';

my @words = split ' ', $test;

print "@words";

print "-------1End------------\n";

foreach my $str (split /(\s)+/, $test) {
  print "$str\n";
}

print "-------End------------\n";

这对我来说仍然很奇怪,因为您将所有单词打印在一行中,而在1End前哨之前没有换行符,然后将每个单词打印在一行之间,并用空白行(但不是真正的空白-包含原始字符串)。但是,如果这就是您想要的,则上面的方法有效。输出:

Test Str$ing-------1End------------
Test

Str$ing
-------End------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java正则表达式查找带有特殊字符的确切单词

来自分类Dev

正则表达式匹配行,带有特殊字符的单词除外

来自分类Dev

带有特殊字符的Python正则表达式

来自分类Dev

带有特殊字符的 jMeter 正则表达式

来自分类Dev

带有连字符的正则表达式单词

来自分类Dev

正则表达式只匹配带有特殊字符的长字符串中的单词

来自分类Dev

什么是正则表达式,它将返回带有特殊字符即|的单个单词名称。(管)

来自分类Dev

正则表达式匹配所有单词,但以特殊字符开头和结尾的单词除外

来自分类Dev

正则表达式\ b以特殊字符开头的单词

来自分类Dev

Perl正则表达式以匹配特殊字符

来自分类Dev

如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?

来自分类Dev

正则表达式获取具有特殊字符的单词

来自分类Dev

正则表达式匹配可能具有特殊字符的单词

来自分类Dev

如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?

来自分类Dev

正则表达式:匹配包含某些特殊字符的所有单词

来自分类Dev

正则表达式:匹配列表中的所有单词,忽略特殊字符

来自分类Dev

Java正则表达式解析带有特殊字符和数字的字符串

来自分类Dev

带有特殊字符python的正则表达式负前瞻字符串

来自分类Dev

带有美式键盘中所有特殊字符的字母数字正则表达式

来自分类Dev

正则表达式-无法检查特殊字符[]

来自分类Dev

正则表达式选择带有空格的单词来代替

来自分类Dev

选择包含带有正则表达式的特定单词的特定html标签

来自分类Dev

带有单词边界的PHP正则表达式

来自分类Dev

正则表达式搜索:带有结尾的单词

来自分类Dev

带有数字或特殊字符的密码复杂性正则表达式

来自分类Dev

正则表达式使用{,},$和@忽略带有特殊字符的空格

来自分类Dev

Ruby中带有特殊字符的正则表达式

来自分类Dev

.NET正则表达式-如何查找带有特殊字符的术语“包围”

来自分类Dev

正则表达式可处理带有特殊字符的标签,而与顺序无关

Related 相关文章

  1. 1

    Java正则表达式查找带有特殊字符的确切单词

  2. 2

    正则表达式匹配行,带有特殊字符的单词除外

  3. 3

    带有特殊字符的Python正则表达式

  4. 4

    带有特殊字符的 jMeter 正则表达式

  5. 5

    带有连字符的正则表达式单词

  6. 6

    正则表达式只匹配带有特殊字符的长字符串中的单词

  7. 7

    什么是正则表达式,它将返回带有特殊字符即|的单个单词名称。(管)

  8. 8

    正则表达式匹配所有单词,但以特殊字符开头和结尾的单词除外

  9. 9

    正则表达式\ b以特殊字符开头的单词

  10. 10

    Perl正则表达式以匹配特殊字符

  11. 11

    如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?

  12. 12

    正则表达式获取具有特殊字符的单词

  13. 13

    正则表达式匹配可能具有特殊字符的单词

  14. 14

    如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?

  15. 15

    正则表达式:匹配包含某些特殊字符的所有单词

  16. 16

    正则表达式:匹配列表中的所有单词,忽略特殊字符

  17. 17

    Java正则表达式解析带有特殊字符和数字的字符串

  18. 18

    带有特殊字符python的正则表达式负前瞻字符串

  19. 19

    带有美式键盘中所有特殊字符的字母数字正则表达式

  20. 20

    正则表达式-无法检查特殊字符[]

  21. 21

    正则表达式选择带有空格的单词来代替

  22. 22

    选择包含带有正则表达式的特定单词的特定html标签

  23. 23

    带有单词边界的PHP正则表达式

  24. 24

    正则表达式搜索:带有结尾的单词

  25. 25

    带有数字或特殊字符的密码复杂性正则表达式

  26. 26

    正则表达式使用{,},$和@忽略带有特殊字符的空格

  27. 27

    Ruby中带有特殊字符的正则表达式

  28. 28

    .NET正则表达式-如何查找带有特殊字符的术语“包围”

  29. 29

    正则表达式可处理带有特殊字符的标签,而与顺序无关

热门标签

归档