我有一个文本,我想在该文本中获得第一次出现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