我正在寫一個小程序,通過使用正則表達式提取Tweeter消息中提到的用戶名。但是,在某些測試案例中,部分程序失敗。基本上,下面指定的正則表達式能夠匹配text1但不匹配text2。現在,下面的正則表達式模式僅用於匹配特定的測試用例,當字符串中的第一個字符是「@」時,後跟高音用戶名。我想我一定誤解了這個正則表達式,並錯誤地使用了它。請問有人能夠對此有所瞭解?Java正則表達式提取Tweeter消息中提到的名稱
String validTweetPattern1 = "^[@]((?=.*[A-Za-z0-9])[\\w-_]+)";
String text1 = "@mention";
String text2 = "@mention @hello";
System.out.println(Pattern.matches(validTweetPattern1, text1));
System.out.println(Pattern.matches(validTweetPattern1, text2));
Console Output:
True
False
在此先感謝。
是的,我目前的正則表達式只在最開始時搜索標籤。在我的程序中,我實際上是使用這個正則表達式來檢查字符串開頭是否有一個hashtag。否則,我將使用另一個正則表達式來搜索正文中的任何其他hashtag。 你的正則表達式的問題是,它也會檢測到像電子郵件地址這樣的有效twitter標籤。下面的這個正則表達式會稍微適合嗎? 「[\\ W && [^ @]] *((?=。* [A-Za-z0-9])[\\ W && [^ @]]」 – Zen
@Zen我更新了我的正則表達式的邏輯。 –