나는이 텍스트에 2 개 이상의 문자열이 처음으로 나옵니다.Regex - 모든 그룹이있는 문자열에서 첫 번째 나타나는 것을 얻으십시오.
텍스트 :
<prod##123456_test_12345##shirt> some more text <prod##123456_test_12345##shirt>
정규식 :
<prod##(\d*)_(.*?)##(.*?)##(.*?)>
이 전체 문자열과 일치합니다 .. 하지만 내가 좋아하는 것이 얻을 수있는 "< 자극 ## 123456_test_12345 ## 셔츠 >"만. (첫 경기).
(<)(.*?\w+.*?)(>)
그것은 첫 번째 문자열과 일치합니다,하지만 난 나중에 분석을 위해 내 그룹을 유지하고 싶습니다 :
나는이 하나 발견했다. 내가 여기 테스트 만든가 나는 또한 Regular expression to stop at first match을 시도했지만 나는 완전히 어떻게 작동하는지 이해하지를 ...
(이것은 PHP위한거야)내가 정말 이 목록을 구문 분석하려면 다음을 수행하십시오.
<prod##12345678##Some text here>
<prod##12345678##Some text here##Extra text>
<prod##12345678##Some text here##Extra text>
<prod##12345678_TEEXT##Some text here>
<prod##12345678_TEEXT##Some text here##Extra text>
<prod##12345678_TEEXT##Some text here##Extra text>
이 목록에 대해 하나의 정규식을 만들 수 있습니까? 4 개의 다른 것들도 멋질 것입니다.
PHP에서및 출력 : 당신은 여분을 가지고있는 것처럼
$product_reg = array ('/<prod##(\d*)_(.*?)##(.*?)##(.*?)>/',
'/<prod##(\d*)_(.*?)##(.*?)>/',
'/<prod##(\d*)##(.*?)##(.*?)>/',
'/<prod##(\d*)##(.*?)>/');
$product_rep = array ('<a href="domain.com/$1?test=$1&test2=$1_$2&$4">$3</a>',
'<a href="domain.com/$1?test=$1&test2=$1_$2">$3</a>',
'<a href="domain.com/$1?test=$3">$2</a>',
'<a href="domain.com/$1">$2</a>');
$string = preg_replace($product_reg, $product_rep, $string);
+1 내 답변과 동일한 답변 :-) – Toto
+1 하둡! 올바른 대답이되어야합니다 :) –
감사! Doh 나는 그것을 지금 본다! 이 질문을 한 후에는 내 질문이 실제로 좀 더 복잡해집니다. 잠시 후에 내 질문이 업데이트 될 것입니다. –