我有一個文本,我想在該文本中獲得第一次出現2個或更多的字符串。正則表達式 - 第一次出現在所有組的字符串中
文字:
<prod##123456_test_12345##shirt> some more text <prod##123456_test_12345##shirt>
正則表達式:
<prod##(\d*)_(.*?)##(.*?)##(.*?)>
這將整個字符串匹配.. 但我想獲得 「<督促## 123456_test_12345 ##恤>」 而已。 (第一場比賽)。
我發現這一個:
(<)(.*?\w+.*?)(>)
將第一個字符串匹配,但我想保持我的組解析以後。
我已經在這裏創造了一個試驗: http://regexr.com/v1?38pmq
我也試過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 2014-10-03 11:40:37
+1哈,同上!必須是正確的答案:) – 2014-10-03 11:46:59
謝謝!我現在看到了!在我看到這個問題後,我的問題實際上有點複雜..將在一秒內更新我的問題。 – 2014-10-03 11:47:32