개발! 딱 깔끔하고 센스있게!

php 정규 표현 식 을 포함 하 는 단어 들 을 찾 는 줄 본문

개발 스크랩 메모/PHP

php 정규 표현 식 을 포함 하 는 단어 들 을 찾 는 줄

렉사이 2020. 12. 9. 02:40

나 는 텍스트 에서 '세 션' 이라는 단 어 를 검색 하고 싶다.

나 는 이 단어 가 나 오 는 그 줄 을 되 찾 고 싶다.

지금까지 그 생각 했 어.

$pattern="[^\\n]*session[^\\n]*"; preg_match_all($pattern,$content, $matches, PREG_OFFSET_CAPTURE); 

그러나 나 는 '알 수 없 는 수정자' * '의 오 류 를 얻 었 다.

너 는 어떻게 이런 정규 표현 식 을 만 드 는 지 아니?

대답 하 다.

정규 표현 식 에 구분자 가 없어 서 오류 가 발생 했 습 니 다:

$pattern = "/[^\\n]*session[^\\n]*/"; // or, with single quotes, you don't need to escape \n $pattern = '/[^\n]*session[^\n]*/'; 

내 가 당신 의 의 도 를 정확하게 설명 한다 면, 0 개 혹은 여러 개의 비 행 자 를 일치 시 키 고, 그 다음 에는 '세 션' 다음 0 개 또는 여러 개의 비 행 자 를 시도 하 겠 습 니 다.

더 쉬 울 수 있 습 니 다 (더 정확 할 수 있 습 니 다) 의 모델 은:

$pattern = '/^.*\bsession\b.*$/m'; 

즉, 한 줄 에서 부터 (^) 0 개 이상 의 글자 (*), 한 단어 경계 (\ b), 단어 '세 션', 다른 단어 경계, 다른 줄 끝 ($) 과 일치 하 는 멀 티 줄 (m 수 장식 표) 입 니 다.

당신 은 ^ n 을 사용 하여 다시 닻 (^ 와 $) 을 만 들 었 습 니 다.

이 는 분명 하지 않 지만, 단어 경 계 를 무시 합 니 다.

원 하 는 단어 인 "session" 을 포함 한 모든 단 어 를 매 칭 하고 있 는 것 같 습 니 다.

즉, "session s" 또는 "properties" 또는 "Obcsession xyz" 를 포함 하 는 행 과 일치 하지 않 습 니 다.

필요 하지 않 으 면, \ b 의 수익 / ^. * session. * $/ m 를 삭제 할 수 있 습 니 다.

우리 의 패턴 은 많 거나 적 게 합 니 다.

이것 은 한 개념 이 단 어 를 포함 하 는 전체 중간 라인 을 찾 는 것 이다.

출력:

array(1) { [0]=> string(29) "finding the word session in a" } 

당신 의 패턴 은 '곤란 을 뛰 어 넘 어 라' 는 단 어 를 찾 을 수 있 습 니 다.

하지만.

Comments