테스트 사이트 - 개발 중인 베타 버전입니다

정규식 질문하나 드립니다. 채택완료

as12as 5년 전 조회 1,841

정규식을 테스트 하는 여타의 사이트에서 https://regexr.com/">https://regexr.com/ https://regex101.com/">https://regex101.com/

</p>

<p>[\\\]+$</p>

<p>

이 정규식 코드를 넣으니 오류가 납니다.

왜 오류가 나는건지?

그리고 저 정규식은 어떤 결과물을 얻기 위한 정규식인지 궁금합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

\

\\ << 찾으실려면 [\\\\]+$

\\\ << 찾으실려면 [\\\\\\]+$

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

a
as12as
5년 전
짝수가 맞는데 저렇게 3개의 역슬래시로 되어 있다면 분명 오류인데
저리 쓰고 있는 소스가 있어 질문을 드린겁니다.
리메이크
5년 전
<?php

$subject = 'PHP is cooooool \\\\(o_o)/ /(o_o)/';

echo "$subject <br>";
if (preg_match_all('[\\]', $subject, $matches)) {
echo "해당 문자열에서 '\'을 발견했습니다.<br>";
} else if (preg_match_all('[\\\]', $subject, $matches)) {
echo "해당 문자열에서 '\'을 발견했습니다.<br>";
} else {
echo "해당 문자열에서 '\'을 발견하지 못했습니다.<br>";
}

var_dump($matches);
a
as12as
5년 전
답을 주신건데...
이해를 못했습니다.
답변 감사합니다.
a
as12as
5년 전
더 안 주셔도 됩니다.
이해 했습니다.
이해 하는데 시간이 좀 걸렸네요.
답변 감사합니다.
리메이크
5년 전
<?php

$subject = 'PHP is cooooool \\\\(o_o)/ /(o_o)\\';

echo "$subject <br>";
// php에서도 \를 이스케이핑문자로 사용하기때문에 정규식에서 \를 인식못함(전달하기전 이스케이핑되서 '\'문자만 정규식으로 넘어감)
if (preg_match_all('/[\\]+$/', $subject, $matches)) {
echo "1. 해당 문자열에서 '\'을 발견했습니다.<br>";
// 정규식에서도 \를 인식하게 하기위해서 한번더 추가('//' 넘겨받은 값을 또 이스케이핑함)
} else if (preg_match_all('/[\\\]+$/', $subject, $matches)) {
echo "2. 해당 문자열에서 '\'을 발견했습니다.<br>";
} else {
echo "해당 문자열에서 '\'을 발견하지 못했습니다.<br>";
}

var_dump($matches);
리메이크
5년 전
채택 보너스로 마지막 문자열 얻기
if ('\\' == substr( 'PHP is cooooool \(o_o)\\', -1)) echo 'PHP is cooooool!';

한글등 유니코드라면 mb_ substr() 함수

댓글을 작성하려면 로그인이 필요합니다.

경로 등에서 마지막 역슬레쉬로 끝나는걸 찾는것 같네요.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

a
as12as
5년 전
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인