findstr:[^ inverse class]错误行为

时间:2019-04-04 18:31:52

标签: findstr

我不希望findstr在-和-之间显示包含'btq'的字符串。

例如:ghjgvyu-btq-jklli8j

所以我尝试了以下命令:

from numba import njit

@njit
def get_ratios(arr):
    ni, nj, nk = arr.shape[:3]
    last_dim = arr.shape[3]

    new_arr = np.zeros(shape=(ni, nj, nk, last_dim, last_dim),
                       dtype=np.float64)
    for i in range(ni):
        for j in range(nj):
            for k in range(nk):
                week = arr[i, j, k, :, 3]
                for d1 in range(last_dim):
                    for d2 in range(last_dim):
                        new_arr[i, j, k, d1, d2] = week[d1] / week[d2]

    return new_arr

get_ratios(weeks_5d)

根本不起作用...在不显示^

的情况下不显示任何内容

然后我尝试:

array([[[[[1.        , 0.49748744, 1.11235955],
          [2.01010101, 1.        , 2.23595506],
          [0.8989899 , 0.44723618, 1.        ]],

         [[1.        , 0.49748744, 1.11235955],
          [2.01010101, 1.        , 2.23595506],
          [0.8989899 , 0.44723618, 1.        ]]]]])

相反:无论是否使用^,它始终显示字符串。

仅当我回显btq时,它才能正常工作:

echo ghjgvyu-btq-jklli8j|findstr .*-[^btq]-.*

但这不是我想要的。

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用findstr/V/C参数运行/R

findstr /V /R /C:"-btq-"

/R是允许使用正则表达式进行搜索的参数。使用参数/C指定要在一行中搜索的具体字符串/正则表达式,使用/V指定不包含参数/C中给出的匹配项的行。

例如:

@echo off

echo 1 ghjgvyu-btq-jklli8j | findstr /V /R /C:"-btq-"
echo 2 ghjgvyu-bt-jklli8j | findstr /V /R /C:"-btq-"
echo 3 ghjgvyu-b-jklli8j | findstr /V /R /C:"-btq-"
echo 4 ghjgvyu-avc-jklli8j | findstr /V /R /C:"-btq-"
echo 5 abc | findstr /V /R /C:"-btq-"

给我

2 ghjgvyu-bt-jklli8j
3 ghjgvyu-b-jklli8j
4 ghjgvyu-avc-jklli8j
5 abc

您会看到,不应在输出中出现的字符串ghjgvyu-btq-jklli8j在那里不会出现。