programing

마지막 이후의 모든 정보를 수집하는 정규 표현식 /

newsource 2022. 9. 16. 20:59

마지막 이후의 모든 정보를 수집하는 정규 표현식 /

나는 정규 표현은 처음인데 마지막 표현 뒤에 모든 것을 모으는 표현은 어떻게 해야 할까?/.

구글의 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
?>
  1. 마지막 이후의 모든 정보를 수집하는 정규 표현식 /
  2. PHP를 사용하여 전체 경로에서 파일 이름을 가져오려면 어떻게 해야 합니까?

언급URL : https://stackoverflow.com/questions/1150559/regular-expression-to-collect-everything-after-the-last