?
Solved

REGEX Help for Twitter

Posted on 2014-03-18
6
Medium Priority
?
506 Views
Last Modified: 2014-03-18
Hello guys,

Can you help me with the REGEX for the following?

I want to extract the "username" out of any of the following strings. The main differences are http[s], trailing slash, the inclusion of #!, and a variant that includes some other stuff in the url.

Thank you!

http://twitter.com/username/ 
http://twitter.com/username 

https://twitter.com/username/ 
https://twitter.com/username 

http://twitter.com/#!/username/
https://twitter.com/#!/username/

http://twitter.com/intent/user?screen_name=username
https://twitter.com/intent/user?screen_name=username
0
Comment
Question by:EffinGood
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 39938616
.*\b(\w+)
0
 
LVL 27

Expert Comment

by:Cornelia Yoder
ID: 39938646
If you are using php, there is an easier way (assuming that you are showing all possible formats).

Just explode() the string on "/", take the 4th part.  It will be either the username or "intent" or "#!".  In the second case, explode again on "=" and the last part will be the username.  In the third case, take the original 5th part.

The php explode() function is awesome.
0
 

Author Comment

by:EffinGood
ID: 39938648
Well, the problem is that the strings are located in a big file full of other chars, so I need to examine the entire file to pull these out.

There will be other urls in there - I'm just looking for those with the 'twitter' part.
0
Don't Cry: How Liquid Web is Ensuring Security

WannaCry is just the start. Read how Liquid Web is protecting itself and its customers against new threats.

 
LVL 35

Accepted Solution

by:
gr8gonzo earned 2000 total points
ID: 39938657
I highly recommend installing the free tool "The Regex Coach" - I've been using it for years.

That said, try this on:
<?php

$urls = array(
"http://twitter.com/username/",
"http://twitter.com/username",
"https://twitter.com/username/",
"https://twitter.com/username",
"http://twitter.com/#!/username/",
"https://twitter.com/#!/username/",
"http://twitter.com/intent/user?screen_name=username",
"https://twitter.com/intent/user?screen_name=username");

foreach($urls as $url)
{
  echo "URL: {$url}\n";
  preg_match("@https?://twitter.com/(?:#!/|intent/user\?screen_name=)?(\w+)@",$url,$matches);
  echo "Username: " . $matches[1] . "\n";
}
?>

Open in new window


You should get this result:
URL: http://twitter.com/username/
Username: username
URL: http://twitter.com/username
Username: username
URL: https://twitter.com/username/
Username: username
URL: https://twitter.com/username
Username: username
URL: http://twitter.com/#!/username/
Username: username
URL: https://twitter.com/#!/username/
Username: username
URL: http://twitter.com/intent/user?screen_name=username
Username: username
URL: https://twitter.com/intent/user?screen_name=username
Username: username

Open in new window

0
 

Author Closing Comment

by:EffinGood
ID: 39938669
Nice! Thank you! I remember that nifty piece of software now - it's been eons! Thank you very much Gonzo!
0
 
LVL 35

Expert Comment

by:Terry Woods
ID: 39938670
Very similar to @gr8gonzo's, though I wrote it independently:
preg_match_all("@https?://twitter.com/(?:#!/)?(?:.*\?screen_name=)?((?!intent)\w+)@i", $data, $matches);
print_r($matches[1]);

Open in new window

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
This article discusses four methods for overlaying images in a container on a web page
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question