• 0

[regex] Help with pattern


Question

Hi I currently need help writing a regex to pull out the tags from the content below:

Lorem ipsum dolor sit amet, [[AA-BB]] consectetur adipiscing elit. Morbi elit quam, rutrum in sollicitudin vehicula, porttitor id orci. Aliquam convallis molestie consectetur. Donec bibendum, urna in gravida auctor, felis elit imperdiet turpis, eget ullamcorper eros nunc a purus. Vivamus laoreet tristique lectus, sit amet pulvinar tellus venenatis nec. Duis scelerisque libero vel augue sollicitudin rhoncus. Vestibulum sit amet nunc magna, et convallis erat. Integer sed odio quis mi accumsan porta. Morbi laoreet imperdiet sapien tincidunt vestibulum. Curabitur rhoncus faucibus quam, consectetur consequat leo mollis et. Donec nisi odio, hendrerit quis vestibulum sit [[bB-CCC]] amet, mollis vulputate tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ac ligula elit, non vestibulum lectus. Integer vulputate lorem id orci adipiscing a fringilla mi tincidunt. Ut varius lobortis vulputate. Cras sagittis blandit neque, sed accumsan diam lacinia ut. In nulla orci, malesuada nec interdum at, consectetur vel turpis. Nullam nunc felis, fermentum mollis [[DDD-EE]] dignissim ut, aliquam eu risus [[EEE-FFF]].

So when the regex runs it returns [[AA-BB]], [[bB-CCC]], [[DDD-EE]], [[EEE-FFF]]. The format is always [[(a-zA-Z0-9)-(a-zA-Z0-9)]] but there is no length on the text either side of the hyphen ( - ).

Any help would be appreciated. ;)

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

(?<=\[{2})([A-Z]+)-([A-Z]+)(?=]{2})

;)

PHP Example:

<?php
$subject = '
Lorem ipsum dolor sit amet, [[AA-BB]] consectetur adipiscing elit. Morbi elit quam, rutrum in sollicitudin vehicula, porttitor id orci.
Aliquam convallis molestie consectetur. Donec bibendum, urna in gravida auctor, felis elit imperdiet turpis, eget ullamcorper eros nunc a purus.
Vivamus laoreet tristique lectus, sit amet pulvinar tellus venenatis nec. Duis scelerisque libero vel augue sollicitudin rhoncus.
Vestibulum sit amet nunc magna, et convallis erat. Integer sed odio quis mi accumsan porta. Morbi laoreet imperdiet sapien tincidunt vestibulum.
Curabitur rhoncus faucibus quam, consectetur consequat leo mollis et. Donec nisi odio, hendrerit quis vestibulum sit [[BB-CCC]] amet, mollis vulputate tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ac ligula elit, non vestibulum lectus.
Integer vulputate lorem id orci adipiscing a fringilla mi tincidunt. Ut varius lobortis vulputate.
Cras sagittis blandit neque, sed accumsan diam lacinia ut. In nulla orci, malesuada nec interdum at, consectetur vel turpis.
Nullam nunc felis, fermentum mollis [[DDD-EE]] dignissim ut, aliquam eu risus [[EEE-FFF]].
';

$matches = array();

preg_match_all('~(?<=\[{2})([A-Z]+)-([A-Z]+)(?=]{2})~', $subject, $matches);

echo '<pre>', print_r($matches, true);

/*
 Array
 (
 	[0] => Array
 	(
 	[0] => AA-BB
 	[1] => BB-CCC
 	[2] => DDD-EE
 	[3] => EEE-FFF
 	)

 	[1] => Array
 	(
 	[0] => AA
 	[1] => BB
 	[2] => DDD
 	[3] => EEE
 	)

 	[2] => Array
 	(
 	[0] => BB
 	[1] => CCC
 	[2] => EE
 	[3] => FFF
 	)
 )
*/

(\[{2}[A-Z]+-[A-Z]+]{2})

<?php
$subject = '
Lorem ipsum dolor sit amet, [[AA-BB]] consectetur adipiscing elit. Morbi elit quam, rutrum in sollicitudin vehicula, porttitor id orci.
Aliquam convallis molestie consectetur. Donec bibendum, urna in gravida auctor, felis elit imperdiet turpis, eget ullamcorper eros nunc a purus.
Vivamus laoreet tristique lectus, sit amet pulvinar tellus venenatis nec. Duis scelerisque libero vel augue sollicitudin rhoncus.
Vestibulum sit amet nunc magna, et convallis erat. Integer sed odio quis mi accumsan porta. Morbi laoreet imperdiet sapien tincidunt vestibulum.
Curabitur rhoncus faucibus quam, consectetur consequat leo mollis et. Donec nisi odio, hendrerit quis vestibulum sit [[BB-CCC]] amet, mollis vulputate tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ac ligula elit, non vestibulum lectus.
Integer vulputate lorem id orci adipiscing a fringilla mi tincidunt. Ut varius lobortis vulputate.
Cras sagittis blandit neque, sed accumsan diam lacinia ut. In nulla orci, malesuada nec interdum at, consectetur vel turpis.
Nullam nunc felis, fermentum mollis [[DDD-EE]] dignissim ut, aliquam eu risus [[EEE-FFF]].
';

$matches = array();

preg_match_all('~(\[{2}[A-Z]+-[A-Z]+]{2})~', $subject, $matches);

echo '<pre>', print_r($matches, true);

/*
 Array
 (
 	[0] => Array
 	(
 	[0] => [[AA-BB]]
 	[1] => [[BB-CCC]]
 	[2] => [[DDD-EE]]
 	[3] => [[EEE-FFF]]
 	)

 	[1] => Array
 	(
 	[0] => [[AA-BB]]
 	[1] => [[BB-CCC]]
 	[2] => [[DDD-EE]]
 	[3] => [[EEE-FFF]]
 	)
 )
*/

Link to comment
Share on other sites

  • 0

Thanks guys worked brilliantly

@CrispCreations: yep that's right although that was a long long time ago before the takeover and the closing down

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.