Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl正则表达式:如何匹配两个非数字之间有一个数字的字符串?_Regex_String_Perl - Fatal编程技术网

Regex Perl正则表达式:如何匹配两个非数字之间有一个数字的字符串?

Regex Perl正则表达式:如何匹配两个非数字之间有一个数字的字符串?,regex,string,perl,Regex,String,Perl,如何匹配两个非数字之间有一个或多个数字且字符串以数字结尾的数组的字符串?假设我想打印出不匹配的字符串。我该怎么做 这是我到目前为止所拥有的 my @array = ("OST3GIC2", "GRE1", "foo23eoo4","MAX13", "foo9fsa2"); foreach @array{ if !(grep /^+\D(+\d)+\D\d$/) { print $_."\n"; } 所需输出 GRE1 MAX13 谢谢您可以查找: /\D\d+\D.*\d$/ \D非数字

如何匹配两个非数字之间有一个或多个数字且字符串以数字结尾的数组的字符串?假设我想打印出不匹配的字符串。我该怎么做

这是我到目前为止所拥有的

my @array = ("OST3GIC2", "GRE1", "foo23eoo4","MAX13", "foo9fsa2");
foreach @array{
if !(grep /^+\D(+\d)+\D\d$/) {
print $_."\n";
}
所需输出

GRE1
MAX13
谢谢

您可以查找:

/\D\d+\D.*\d$/
  • \D
    非数字
  • \d+
    任意位数
  • \D
    非数字
  • *
    任何东西
  • \d
    一个数字
  • $
    字符串的最后一个结尾

如果您想直接使用非匹配项,可以使用

^\D+\d+$
^\D*\d+\D+\d+$
如果需要匹配项,然后过滤掉,可以使用

^\D+\d+$
^\D*\d+\D+\d+$
意义

  • 以反转regexp结果
  • ^\D\D+\D+\D+$
    表示从任何非数字开始,然后是任何数字,然后是任何非数字,然后以数字结束
(这里的任意表示至少一个)

量词(
+
)位于字符类之后,而不是它之前。您编译的这个正则表达式不可能没有错误。