Perl Reg表达式,单词锚和特殊字符

时间:2014-11-15 03:32:52

标签: regex perl

我正在尝试编写一个脚本来检测变量类型,并且我的正则表达式一直存在问题。

if(/\$\b([a-zA-Z]|_ )(\w)*\b /x && !/ /)

是我用来检测标量的。现在的问题是\b \b似乎没有使用特殊字符(!@#$等)。例如,它会将$var###计为有效名称。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你的正则表达式是正确的。您需要做的就是将其锚定到字符串的开头和结尾

^\$\b([a-zA-Z]|_ )(\w)*\b$

示例http://regex101.com/r/uD1eR7/1

所做的更改

  • ^将正则表达式锚定在字符串的开头

  • $将正则表达式锚定在字符串的末尾

注意您还可以将下划线_移动到字符类中并删除字边界,因为它不会带来额外的好处

^\$[a-zA-Z_]\w*$