
Powershell에 다음 코드가 있습니다.
if($url -match "^https://www.youtube"
)
일괄적으로 동일한 검사를 수행할 수 있으므로 다음을 시도했지만 아무것도 시도하지 않았습니다.
echo %url% | findstr "^https://www.youtube*$" >nul
if %url% == 0 (
echo la variables es correcta
) else (
echo la varaible no es correcta
)
답변1
나는 그것을 사용하여 그것을 할 것입니다조건부 실행:
cmd /V /C echo(!url!| findstr /I "^https://www\.youtube.\" > nul && (
echo la variable es correcta
) || (
echo la variable no es correcta
)
왜냐하면:
- 잘못된 변수( )를 확인하고 있는 경우 or 또는 even을
if %url% == 0
사용해야 합니다 (이는 0보다 작은 값 에도 해당되지만 어쨌든 그러한 값을 반환하지 않습니다). 좋은 대안은if %ErrorLevel% == 0
if %ErrorLevel% equ 0
if not ErrorLevel 1
ErrorLevel
findstr
조건부 실행; echo %url%
%url%
특수 문자가 포함되어 있으면 문제가 발생하므로지연된 확장이를 방지하기 위해 사용됩니다.cmd /V
!url!
; 대신에 의해 적용됩니다%url%
.echo
의 특정 값에 문제가 있을 수 있습니다!url!
. 이는 ;를 작성하여 피할 수 있습니다echo(!url!
. 또한 space파이프 기호( ) 앞의 후행이|
에코되므로 제거하면 됩니다.- URL은 일반적으로 대소문자를 구분하지 않으므로 다음을 사용하여 대소문자를 구분하지 않고 검색/비교도 수행합니다.
findstr /I
; - URL
.
의 는 문자 그대로의 문자이므로 검색 문자열에서\.
; - 사용한 접미사
*$
가 잘못되었습니다. 읽어야.*$
하지만 어쨌든 필요하지 않습니다. 예를 들어\.
와 같은 것과 일치하지 않도록 리터럴 점( )을 추가합니다 .https://www.youtubefake.net/
답변2
슈퍼유저에 오신 것을 환영합니다.
일부 텍스트가 "로 시작하는지 확인하려는 경우https://www.youtube", 끝에는 필요하지 않습니다 . 그리고 을 수행한 후에 *$
왜 비교하는지 잘 모르겠습니다 . 확인하면 알고 싶은 내용이 표시됩니다. 이 코드는 달성하려는 작업을 수행합니다.%url% == 0
findstr
errorlevel
SET /p url=Enter a URL:
echo %url% | findstr "^https://www.youtube" >nul
if errorlevel 1 (
echo la varaible no es correcta
) else (
echo la variables es correcta
)
답변3
귀하의 예에서 실제 정규 표현식이 필요한 것 같지 않습니다. 간단한 문자열 대체를 사용하여 한 문자열이 다른 문자열에 있는지 알 수 있습니다.
if "%url:https://www.youtube=%"=="%url%" (
echo variable is not in string
) else (
echo variable is in string
)
구문은 %VAR_NAME:SEARCH_STRING=REPLACE_STRING%입니다.
여기서 말하는 내용은 다음과 같습니다.
- 대리자 "https://www.youtube"라는 이름의 변수에 아무것도 없습니다.URL
- 대체가 수행되지 않은 것과 비교하십시오.
- 동일하면 문자열 "https://www.youtube"가 변수에 없었습니다.
주의사항:
이 방법은 powershell에서 "^" 앵커가 수행한 기능을 제공하지 않습니다. 변수인 경우포함"https://www.youtube"어디서든 당신의 일치는 무효가 될 것입니다.. 예를 들어.."https://www.senorsuerte.com/value?https://www.youtube"당신이 의도한 바가 아닐 때 히트작을 만들어낼 것입니다.
이 경우는 테스트 중인 각 문자열의 시작 부분에 잘못된 문자를 추가하여 쉽게 수정할 수 있습니다.
if "*%url:https://www.youtube=%"=="*%url%" (
echo variable is not in string
) else (
echo variable is in string
)
각 문자열의 시작 부분에 있는 "*"를 참고하세요. "*"는 마법이 아닙니다. 문자열의 시작 부분에 쿼리를 고정할 뿐이며 어떤 문자라도 될 수 있습니다.