>백엔드 개발 >PHP 튜토리얼 >PHP 정규식에서 단어 경계를 사용할 때 예기치 않은 동작이 발생하는 원인은 무엇입니까?

PHP 정규식에서 단어 경계를 사용할 때 예기치 않은 동작이 발생하는 원인은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-21 07:29:03389검색

What Causes Unexpected Behavior When Using Word Boundaries in PHP Regular Expressions?

PHP 정규 표현식의 단어 경계 동작 이해

PHP에서 정규 표현식(RegEx)을 사용할 때 단어 경계는 유용한 개념이 될 수 있습니다. 특정 단어를 일치시키기 위해. 그러나 예상치 못한 결과를 방지하려면 단어 경계가 어떻게 작동하는지 이해하는 것이 중요합니다.

RegEx 예 "/(^|b)@nimal/i"에서 몇 가지 혼란스러운 동작을 발견했습니다. "cat"으로 시작하는 단어를 일치시키려면 "^"(문자열의 시작) 및 "b"(단어 경계)를 포함하여 "cat"이 더 큰 단어의 일부가 아닌지 확인했습니다. 그러나 결과는 예상한 것과 반대였습니다.

이 동작을 이해하려면 단어 경계가 단어 문자("w")에서 비단어 문자( "W") 또는 그 반대. 첫 번째 예인 "something@nimal"에서는 "g"와 "@"가 모두 단어가 아닌 문자이기 때문에 "@" 문자 앞에 단어 경계가 없습니다. 따라서 RegEx가 일치하지 않습니다.

두 번째 예에서는 "something!@nimal", "!" 및 "@" 문자는 모두 단어가 아닌 문자입니다. 이는 그들 사이에 단어 경계가 없음을 의미합니다. 따라서 RegEx는 "@nimal"이라는 단어의 일부로 간주되기 때문에 "cat"을 일치시키지 못합니다.

"cat"로 시작하는 단어를 올바르게 일치시키려면 단어 문자가 있는지 확인해야 합니다. "@" 문자 앞에. 이는 다음 RegEx를 사용하여 수행할 수 있습니다: "/[a-zA-Z]b@nimal/i", 여기서 "[a-zA-Z]"는 모든 알파벳 문자와 일치하고 b는 여전히 비로의 전환을 나타냅니다. -단어 문자.

위 내용은 PHP 정규식에서 단어 경계를 사용할 때 예기치 않은 동작이 발생하는 원인은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.