2009-04-11 13 views
7

मेरे पास निम्न उदाहरण ट्वीट है:RegExp: ट्वीट्स (twitter.com) से उपयोगकर्ता नाम निकालने के लिए कैसे?

आरटी @ उपयोगकर्ता 1: @thing और @ user2 कौन हैं?

मैं केवल user1, बात और user2 करना चाहते हैं।

मैं उन तीन नामों को निकालने के लिए नियमित अभिव्यक्ति का उपयोग कैसे कर सकता हूं?

पीएस: उपयोगकर्ता नाम में केवल अक्षर, संख्याएं और अंडरस्कोर होना चाहिए।

उत्तर

16

परीक्षण किया गया:

/@([a-z0-9_]+)/i 

रूबी (आईआरबी) में:

>> "RT @user1: who are @thing and @user2?".scan(/@([a-z0-9_]+)/i) 
=> [["user1"], ["thing"], ["user2"]] 

अजगर में:

>>> import re 
>>> re.findall("@([a-z0-9_]+)", "RT @user1: who are @thing and @user2?", re.I) 
['user1', 'thing', 'user2'] 

PHP में:

<?PHP 
$matches = array(); 
preg_match_all(
    "/@([a-z0-9_]+)/i", 
    "RT @user1: who are @thing and @user2?", 
    $matches); 

print_r($matches[1]); 
?> 

Array 
(
    [0] => user1 
    [1] => thing 
    [2] => user2 
) 
+0

आप चारों ओर [एक-z0-9_], यानी @ ([एक-zA-Z0-9 _]) एक पर कब्जा समूह जोड़ने के लिए –

+0

धन्यवाद करना होगा, यह बढ़िया काम करता है! एक आखिरी सवाल: जब "@" से पहले कोई स्थान होना चाहिए या शुरुआत में होना चाहिए, तो क्या मैं निम्न अभिव्यक्ति का उपयोग कर सकता हूं? "/ (| ^) @ ([ए-जे 0-9 _] +)/i" – caw

+0

लुकबींड का उपयोग करें - http://www.regular-expressions.info/lookaround.html – user4812

0

यह करना चाहिए (सुविधा के लिए मैं नामित इस्तेमाल कैप्चर):।?

+ @ (? [एक-zA-Z0-9 _]):? [^ @] @ ([^ \ s] +) [^ @] @ ([एक-zA-Z0-9 _])

+0

PHP आपकी अभिव्यक्ति का उपयोग करते समय एक त्रुटि संदेश दिखाता है। कुछ "गायब डेलीमीटर" अंत में "या तो कुछ। – caw

1

इस regex वाले पुनरावर्तक (findall) की कोशिश?

(@[\w-]+) 

अलविदा

+0

सरल ... अच्छा! मैचों की सरणी प्राप्त करने के लिए स्कैन (रूबी) के साथ संयोजन: text.scan (/ @ [\ w -] + /) – Danny

2
/(?<!\w)@(\w+)/ 

उपर्युक्त निम्नलिखित परिदृश्य को कवर करता है, जो अन्य उत्तर इस धागे में नहीं है:

  • एक @ चिह्न जो उपयोगकर्ता नाम नहीं होना चाहिए, उदा। "मेरा ईमेल [email protected] है"
  • अभी भी एक स्ट्रिंग की शुरुआत में एक उपयोगकर्ता नाम की अनुमति देता है, उदा। "@username lorem ipsum ..."
+0

धन्यवाद। कोई भी ईमेल पता जारी नहीं करता है! – innonate

0

क्या इस पाठ के मुद्दों को हल करने के लिए आपके प्रोजेक्ट में ट्विटर टेक्स्ट लाइब्रेरी [1] में एक अच्छा विचार शामिल है।

twttr.txt.extractMentions("a very generic twitt with some @mention"); 

[1] https://github.com/twitter/twitter-text-js

संबंधित मुद्दे