regex - 为什么输出 "True"

标签 regex perl regex-negation regex-lookarounds

为什么这个 perl 代码给出输出“True”?

$bar = "\\";
if ($bar =~ /[A-z]/){
  print "True";
} else {
  print "False";
}

它不应该返回false吗?

最佳答案

因为\在A-z之间。见下表,92 介于 65 和 122 之间。尝试 [A-Z]。

   0 nul    1 soh    2 stx    3 etx    4 eot    5 enq    6 ack    7 bel
   8 bs     9 ht    10 nl    11 vt    12 np    13 cr    14 so    15 si
  16 dle   17 dc1   18 dc2   19 dc3   20 dc4   21 nak   22 syn   23 etb
  24 can   25 em    26 sub   27 esc   28 fs    29 gs    30 rs    31 us
  32 sp    33  !    34  "    35  #    36  $    37  %    38  &    39  '
  40  (    41  )    42  *    43  +    44  ,    45  -    46  .    47  /
  48  0    49  1    50  2    51  3    52  4    53  5    54  6    55  7
  56  8    57  9    58  :    59  ;    60  <    61  =    62  >    63  ?
  64  @    65  A    66  B    67  C    68  D    69  E    70  F    71  G
  72  H    73  I    74  J    75  K    76  L    77  M    78  N    79  O
  80  P    81  Q    82  R    83  S    84  T    85  U    86  V    87  W
  88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^    95  _
  96  `    97  a    98  b    99  c   100  d   101  e   102  f   103  g
 104  h   105  i   106  j   107  k   108  l   109  m   110  n   111  o
 112  p   113  q   114  r   115  s   116  t   117  u   118  v   119  w
 120  x   121  y   122  z   123  {   124  |   125  }   126  ~   127 del

关于regex - 为什么输出 "True",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20285562/

相关文章:

perl - 在哈希中打印特定数量的键值对

javascript - 匹配除匹配(多字)模式之外的所有字符

c++ - 使用 SLRE 正则表达式查找两个标签之间的数据

regex - 如何否定整个正则表达式?

regex - 如何在 OS X 上使用 sed 插入制表符?

regex - Linux shell 提取匹配模式之间的子字符串

regex - 如何在 R 中编写模式来表达 `don' t contain`?

arrays - 创建唯一的随机数字序列

使用哈希和哈希引用的 Perl 速度比较

java - 正则表达式在运算符之后拆分数学表达式并查找负数