PHP에 preg_match
표현식을 사용하여 일반 약어를 반환 한 다음 단어의 전체 버전 (예 : "St."이 "Street"이 됨)으로 바꾸기 위해 노력하고 있습니다. 데이터 베이스.preg_match를 사용하여 약어 확장하기
약어, 전체 약어, 선택적 "."앞에 공백, 문자열 또는 공백의 끝 ("역"에 대해 일치하지 않음)을 일치시켜야 함을 의미합니다. 나는 시도했다 :
preg_match("#\s(S|s)t\.?\s#" , $my_string , $matches)
preg_match("#(\s(S|s)t\.?)+(\s|$)+#" , $my_string , $matches)
preg_match("#(\s{1}(S|s){1}t{1}\.?){1}\s{1}#" , $my_string , $matches)
필자는 예상하지 못하는 이유를 모르겠다. 때 $my_string = "My St. and something else"
:.
1 $ 일치 : array (" St." , "S")
2 : array (" St." , " St." , "S", " ")
3 : array (" St.", " St." , "S")
그것은 경우 "성"에 해당 일치를 반환 가 "st.", "St"또는 "st"로 바뀝니다.
이러한 경우 일치 항목을 단일 인스턴스로 좁히려면 어떻게합니까?
기능적으로 첫 번째 경기 만 대체하기 때문에 해당 대체물이 작동하는 것처럼 보이지만 한 경기로 좁힐 수 있어야합니다.
두 번째 질문에서 두 번째 질문에서 두 번째 질문에 공백이나 문자열의 끝 부분에 (\s|$)
을 사용하려고합니다. 그렇지 않은 경우 어떻게해야합니까?
https : //로 regex101. – yivi