У меня есть файл с несколькими строками, как показано в примере ниже, но мне нужно, чтобы символы, упомянутые в шаблоне, присутствовали в выводе, другими словами, не жадное совпадение.
Мне нужен способ удалить первую часть строки и получить строку, которая начинается с «07» или «08» и все в строке до конца строки.
Пример:
Не жадный - в идеале, я бы хотел удалить все символы до 07, но включить 07 в выходную строку. Итак, я пробовал `inputStr -replace '^. *? 07 (. *) $', '$ 1' ', но результат из этого' .16.0162 (B0375, U0847) 'и ожидаемый результат: '07 .16.0162 (B0375 , U0847)»
Это должно работать:
$str = 'SELECT TZ_OFFSET (SESSIONTIMEZONE) FROM DUAL07.16.0162 (B0375, U0847)'
$str -replace '^.*?DUAL(.*)$','$1'
Ага, это то, что я искал. file = "c: \ abc.txt" (Get-Content -Path $ file) -replace '^. *? DUAL (. *) $', '$ 1' | set-content $ file Спасибо!
New-Variable -Name file -Value "c:\abc.txt" #This file contains the line that needs to be edited
(Get-Content -Path $file) -replace '^.*?DUAL(.*)$','$1'|set-content $file
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Нежадный не означает, что символы не добавляются в вывод. Вы здесь путаете понятия. Какой у вас текущий код? Что не работает?