вытащить данные между фигурными скобками с помощью powershell и других строк в файле [duplicate]

Я предполагаю, что вы пытаетесь использовать TF> = 1.6, потому что ваш процессор довольно старый и не поддерживает инструкции AVX. В самом деле, начиная с версии 1.6, , предварительно созданные двоичные файлы с тензорным потоком используют команды AVX .

В настоящее время ваши варианты: или

  1. встроенный двоичный файл TF 1.5 или ранее.
  2. Поиск неофициального встроенного бинарного файла TF> = 1.6, который не поддерживает AVX. Поскольку это время написания, предварительно созданные двоичные файлы TF 1.8 из conda install в Windows, похоже, не были созданы с поддержкой AVX, хотя я не мог найти эту информацию нигде и, следовательно, не могу сказать, является ли это преднамеренным, и как долго это будет случай. Остерегайтесь того, что двоичные файлы из conda-forge (которые раньше были основным поставщиком кондоминиума conda, прежде чем он был доступен на основном канале), с другой стороны, построены с поддержкой AVX.
  3. Измените свое оборудование для поддержки AVX (очевидно).
  4. Скомпилируйте свой собственный двоичный файл с тензорным потоком без инструкций AVX. Разумный вариант, если никто из других не был возможен.

0
задан adjuzy 20 April 2016 в 14:03
поделиться

3 ответа

Быстрый ответ: измените ваш жадный захват (.*) на не жадный - (.*?). Это должно сделать это.

customfield_11301(.*?)customfield_10730

В противном случае захват будет потреблять столько, сколько может, в результате чего он будет продолжаться до последнего customfield_10730.

С уважением

1
ответ дан ClasG 28 August 2018 в 14:33
поделиться

Вам нужно сделать свой RegEx Lazy :

customfield_11301(.*?)customfield_10730

Live Demo on Regex101

Ваше Regex было Жадные . Это означает, что он найдет customfield_11301, а затем перенесет, пока не найдет последний customfield_10730.

Вот более простой пример Greedy vs Lazy Regex:

# Regex (Greedy): [(.*)]
# Input:          [foo]and[bar]
# Output:         foo]and[bar

# Regex (Lazy):   [(.*?)]
# Input:          [foo]and[bar]
# Output:         "foo" and "bar" separately

Ваше Regex было очень похоже на первое, оно слишком много захватывало, в то время как этот новый отображает наименьшее количество данных и поэтому будет работать так, как вы планировали

2
ответ дан Druzion 28 August 2018 в 14:33
поделиться

Вот функция PowerShell, которая найдет строку между двумя строками.

function GetStringBetweenTwoStrings($firstString, $secondString, $importPath){

    #Get content from file
    $file = Get-Content $importPath

    #Regex pattern to compare two strings
    $pattern = "$firstString(.*?)$secondString"

    #Perform the opperation
    $result = [regex]::Match($file,$pattern).Groups[1].Value

    #Return result
    return $result

}

Затем вы можете запустить такую ​​функцию:

GetStringBetweenTwoStrings -firstString "Lorem" -secondString "is" -importPath "C:\Temp\test.txt"

В моем файле test.txt есть следующий текст:

Lorem Ipsum - просто фиктивный текст печатной и печатной промышленности.

Итак, мой результат:

Ipsum

2
ответ дан Stephen Rauch 28 August 2018 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: