我有一个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/ )
感谢。
答案 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;