마지막 이후의 모든 정보를 수집하는 정규 표현식 /
나는 정규 표현은 처음인데 마지막 표현 뒤에 모든 것을 모으는 표현은 어떻게 해야 할까?/
.
구글의 GData에서 사용하는 아이디를 추출하고 있습니다.
예를 들어 문자열은
http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123
ID 위치:p1f3JYcCu_cb0i0JYuCu123
아, 그리고 나는 PHP를 사용하고 있어.
다음 중 하나 이상(슬래시가 아닌 임의의 것)에 일치하고, 그 뒤에 문자열이 끝납니다.
[^/]+$
주의:
- 그룹이 필요 없기 때문에 패런은 없습니다. 결과는 그룹 0(일치 자체)에 들어갑니다.
- 사용하다
+
(의 일부*
따라서 마지막 문자가 슬래시일 경우 (빈 문자열이 아니라) 일치하지 않습니다.
그러나, 보다 빠르고 심플한 솔루션은, 언어에 짜넣어진 문자열 리스트의 처리 기능을 사용하는 것입니다. ListLast( Text , '/' )
또는 동등한 기능.
PHP에서 가장 가까운 함수는 다음과 같이 동작하는 strchr입니다.
strrchr( Text , '/' )
여기에는 결과에 슬래시가 포함됩니다.아래 Teddy의 설명에 따라 슬래시를 제거할 수 있습니다.
substr( strrchr( Text, '/' ), 1 );
일반적으로:
/([^/]*)$
그러면 원하는 데이터가 첫 번째 그룹과 일치합니다.
편집 PHP를 사용하고 있기 때문에 문자열에서 마지막으로 발생한 문자부터 끝까지 모든 것을 반환하는 것도 사용할 수 있습니다.또는 및 을 조합하여 먼저 마지막으로 발생한 위치를 찾은 후 해당 위치에서 끝까지 하위 문자열을 가져올 수 있습니다.또는 및 에서 문자열을 분할합니다./
마지막 부분만 맞히면 돼요
basename 함수로 "filename" 또는 마지막 부분을 얻을 수도 있습니다.
<?php
$url = 'http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123';
echo basename($url); // "p1f3JYcCu_cb0i0JYuCu123"
제 박스에서는 전체 URL을 전달할 수 있습니다.옷을 벗어야 할 수도 있어요http:/
정면에서
basname과 dirname은 unix 파일 경로와 같은 모든 항목을 이동할 때 적합합니다.
/^.*\/(.*)$/
^
= 행의 시작
.*\/
= 행의 시작과 마지막 오카렌스의 탐욕 일치
(.*)
= /의 마지막 발생 이후 발생하는 모든 것의 그룹
일반 문자열 분할도 가능합니다.
$str = "http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123";
$s = explode("/",$str);
print end($s);
이 패턴은 의 마지막 슬래시를 캡처하지 않습니다.$0
마지막 슬래시 뒤에 문자가 없으면 아무것도 일치하지 않습니다.
/(?<=\/)([^\/]+)$/
편집: 단, ECMAScript(Javascript, Actionscript), Ruby 또는 기타 몇 가지 플레이버에서는 지원되지 않습니다.이러한 플레이버의 어느쪽인가를 사용하고 있는 경우는, 다음의 어느쪽인가를 사용할 수 있습니다.
/\/([^\/]+)$/
하지만 그것은 마지막 상처를 잡아낼 것이다$0
.
PHP 프로그래머는 아니지만 strpos가 시작하기에 더 유망해 보입니다.가장 오른쪽에 있는 '/'을(를) 찾으십시오. 그리고 이 값이 지난 모든 항목을 찾으십시오.정규식은 사용되지 않습니다.
문자열에서 마지막 문자 위치 찾기
@Mark Rushakoff의 답변에 근거해, 다양한 케이스에 최적인 솔루션을 소개합니다.
<?php
$path = "http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123?var1&var2#hash";
$vars =strrchr($path, "?"); // ?asd=qwe&stuff#hash
var_dump(preg_replace('/'. preg_quote($vars, '/') . '$/', '', basename($path))); // test.png
?>
언급URL : https://stackoverflow.com/questions/1150559/regular-expression-to-collect-everything-after-the-last
'programing' 카테고리의 다른 글
바이트의 적절한 휴지 상태 주석 [] (0) | 2022.09.16 |
---|---|
오류: 로컬 데이터 로딩이 비활성화되었습니다. 클라이언트 측과 서버 측 모두에서 활성화해야 합니다. (0) | 2022.09.16 |
상태가 렌더링되기 전에 Vue.js/vuex getters 오류가 발생했습니다. (0) | 2022.08.28 |
vuex 디스패치 응답 처리 방법 (0) | 2022.08.28 |
Nuxt Apollo 로컬 상태를 사용하여 Vuex를 완전히 대체할 수 있습니까? (0) | 2022.08.28 |