匹配perl中的负数和非负数

时间:2013-07-20 00:34:02

标签: regex perl

我有一个Perl脚本,它匹配以(字母数字或下划线)开头的行,后跟任意数量的空格,后跟另一个(字母数字或下划线)。我现在意识到我还需要包括第二个(字母数字或下划线),这可能是一个负数(例如-50)。我怎么能做到这一点?

原始代码:

if ( /^\w[\s]+\w/ and not /^A pdb file/ ) {
...doSomething
}

未成功尝试过:

if ( /^\w[\s]+\-*w/ and not /^A pdb file/ )
if ( /^\w[\s]+\-{0,1}w/ and not /^A pdb file/ )
if ( /^\w[\s]+\w|-\w/ and not /^A pdb file/ )

感谢。

2 个答案:

答案 0 :(得分:1)

这是否符合您的需求?

/^\w+\s*-?\w+$/

它说匹配:

  • \w+:任意数量的字母数字字符(包括下划线)
  • \s*:任意数量的空格(如果您需要至少一个空格,请使用\s+
  • -?:可选短划线
  • \w+:任意数量的字母数字字符(包括下划线)。如果这组字符只能是数字,那么请改用\d+

答案 1 :(得分:-2)

尝试:

m{
    \A         # start of the string
    \w         # a single alphanumeric or underscore
    \s+        # one or more white space
    (?:        # non-capturing grouping
        \-     # a minus sign
        \d+    # one or more digits
    )?         # match entire group zero or one time
    \w         # a single alphanumeric or underscore
}msx;