-1

我有一个 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/ )

谢谢。

4

2 回答 2

1

这是否满足您的需求?

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

它说匹配:

  • \w+: 任意数量的字母数字字符(包括下划线)
  • \s*: 任意数量的空格(如果您需要至少一个空格,请使用\s+
  • -?: 可选破折号
  • \w+: 任意数量的字母数字字符(包括下划线)。如果这组字符只能是数字,那么就\d+改用。
于 2013-07-20T00:38:03.000 回答
-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;
于 2013-07-20T01:17:56.047 回答