2009-11-11 2 views
0

저는 정규 표현식을 처음 접했고 PHP에서 용어의 첫 번째와 마지막 어커런스를 일치시키고 싶습니다. 이 라인의 예를 들면 :처음과 마지막에 일치하는 PHP 정규식

"찰리, 메리, 밥, 밥, 메리, 찰리, 찰리, 메리, 밥, 밥, 메리, 찰리"

난 그냥으로 접근하고 싶습니다

첫 번째와 마지막 " 찰리 "는 아니지만 중간에있는 두 사람은 아닙니다. 제가 처음 용어와 마지막으로 나온 용어에 어떻게 일치합니까?

감사

답변

2

당신은 당신이 (즉,이 정규식 패턴이 아니다.), 당신은 당신의 문자열의 위치를 ​​찾고, 당신은 단지 이러한 사용할 수 있습니다 무엇을 찾고 있는지 문자열 알고있는 경우 :

strpos을 -

0

이 정규 표현식을보십시오 : 욕심 * 정량이 처리됩니다

^(\w+),.*\1 

을 그 첫 번째 단어 (\w+)와 그 단어의 또 다른 발생 (\1,의 일치 사이의 문자열 첫 번째 그룹화)은 가능한 한 커야합니다.

0

일반 표현식에 ^$ 기호를 추가해야합니다.

  • ^은 - 일치하는 문자열
  • $의 시작 - 그것은 마지막 샘플과 일치하는 첫 번째 샘플에 맞게 ^charliecharlie$하게 될 경우 문자열

의 끝과 일치합니다. 또는 둘 다 일치 시키려면 ^charlie|charlie$이됩니다.

해당 기호에 대한 자세한 내용은 Start of String and End of String Anchors을 참조하십시오.

-1

문자열을 폭발보십시오 문자열에서 마지막 문자의 위치를 ​​찾습니다 - 문자열

strrpos이 처음 나타나는 위치를 찾습니다.

$names = "charlie, mary,bob,bob,mary, charlie, charlie, mary,bob,bob,mary,charlie"; 
$names_array = explode(",", $names); 

이렇게하면 이름이있는 배열이 생깁니다. 마지막을 원하므로 0 위치에 있습니다.

$first = $names_array[0]; 

마지막으로 조금 더 까다로워집니다. [count()]가 몇 개 있는지 알아야하고 배열이 0부터 시작하기 때문에 하나를 빼야합니다.

$last = $names_array[count($names_array)-1]; 

는 나는 그것이 가능한 최고의 대답도 가장 효과적인하지 않을 수 있습니다 알고,하지만 난 당신이 정말 작은 문제를 해결하여, 프로그래밍을 받기 시작하는 방법을 생각한다.

행운을 빈다.

+0

end()도 배열의 마지막 요소를 가져옵니다. – Galen