PowerShell에서 정규 표현식을 만드는 중입니다. 이것은 VS2012에서 postbuild 이벤트를 시작하여 sql을 변환하여 테이블 이름과 열 이름에 공백이 없어야합니다. 이 작업이 끝나면 파일 내용을 정규식 문자열로 대체해야하는 스크립트를 수정할 수 있습니다. 나는 this tutorial과 함께 일해 왔지만, 열린 공간과 닫힌 영역 사이에 공백이 있으면 밑줄로 스페이스 (\ s)를 대체 할 수 없습니다. 내가 PowerShell을 ISE에서이 스크립트를 실행하면대괄호 안에있는 문자에 대한 정규 표현
select * from [Existing_product] where [Existing_product].[Desc_value] = 26
:
변환 :
select * from [Existing product] where [Existing product].[Desc value] = 26
여기
내가 SQL을 변환하고 싶습니다 방법의 예#Example of PowerShell Regex Replace
$newline = '
'
$strText = 'select * from [Existing product] where [Existing product].[Desc value] = 26'
$Pattern = '(?<=\[)(\s(?<=\s))(?=\])'
$New = "_"
$newline
'SourceText: '
$strText
$newline
$strReplace = [regex]::replace($strText, $pattern, "$New")
"We will now replace $Pattern with $New :"
$newline
$strReplace
이 결과를 얻으십시오 :
PS C:\> C:\REGEX.ps1
SourceText:
select * from [Existing product] where [Existing product].[Description value] = 26
We will now replace (?<=\[)(\s(?<=\s))(?=\]) with _ :
select * from [Existing product] where [Existing product].[Description value] = 26
여기서 공백이있는 문자열이 위의 밑줄로 바뀌길 원합니다.
내 정규식은 현재 (?<=\[)(\s(?<=\s))(?=\])
이지만 분명히 대괄호가 바로 옆에있는 공백 만 선택합니다. 위의 정규식에서 무엇을 놓치고 있습니까?
질문이나 도움이 필요하시면 알려주세요.
감사에서! 예, 두 번째 옵션 인'(? <= \ [[^ \]] *?) (\ s (? <= \ s)) (? = [^ \]]? \])' 내가 뭘 찾고 있었는지. 다시 한 번 감사드립니다! –
대괄호 사이에 여러 공백으로 테스트를 해봤습니다. –
아직 해킹입니다. 나는 정규 표현식이 모든 것을 자르기 위해 사용해야하는 "스위스 육군의 전기 톱"이라고 생각하지 않습니다. –