【问题标题】:Match character using regular expression in Perl在 Perl 中使用正则表达式匹配字符
【发布时间】:2013-01-11 16:32:14
【问题描述】:

我正在尝试逐行阅读文档,并且只对某些字母字符感兴趣,而不是换行符。

我有以下几点:

@chars = split //;

for $char (@chars) {
  if (   ($pos % 16569 == 1719)
      || ($pos % 16569 == 8251)
      || ($pos % 16569 == 10238)) {
    print FILE_OUT "$char\n";
  }

  if ($char == m/[A-Z]/) {
    $pos++;
  }

}

正则表达式m/[A-Z]/ 匹配失败,因为$pos 永远不会增加。甚至可以匹配 Perl 中的单个字符,还是只允许对字符串进行此操作?如果是这样,有没有办法解决这个问题?

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    您可能指的是=~,而不是==== 是相等的数字比较。 =~ 在运算符左侧调用常规模式匹配。

    哦,您还应该始终使用use strictuse warnings,尤其是在示例中。

    欢迎来到 StackOverflow。

    【讨论】:

    • 是的,没错。奇怪的语法,它类似于 ~= 这意味着 != 在 Matlab 中。
    【解决方案2】:

    可能有更优雅的方法可以做到这一点,但您遇到的问题是您使用了错误的运算符。 == 表示“数字,等于”;在这种情况下,您是在询问 $char 是否匹配 $_ 与您的正则表达式的匹配(这不是您想要的!)

    相反,您应该使用正则表达式匹配运算符:=~

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      相关资源
      最近更新 更多