2010-04-20 103 views
16

我想找到的話開始單詞,就像一個特定的字符開頭:正則表達式來查找與一個特定的字符

Lorem存有#text二Lorem存有。 如何#你。沒關係。完成。 現在有什麼#else。

我需要讓所有的單詞都以「#」開頭。所以我的預期結果是#text,#are,#else

任何想法?

+2

你用c#和javascript標記了這個。你想在哪裏做這個? – womp 2010-04-20 21:14:34

+0

要在C裏做# – 2010-04-20 21:29:42

回答

29

搜索:

  • 未嘗不是一個單詞字符,然後
  • 一些單詞字符

那麼試試這個:

/(?<!\w)#\w+/ 

還是在C#它看起來像這樣:

string s = "Lorem ipsum #text Second lorem ipsum. How #are You. It's ok. Done. Something #else now."; 
foreach (Match match in Regex.Matches(s, @"(?<!\w)#\w+")) 
{ 
    Console.WriteLine(match.Value); 
} 

輸出:

#text 
#are 
#else 
+1

啊好...趕在#字界之前不會工作,會嗎?但在JavaScript中,你不能做負面後視? – 2010-04-20 21:20:16

+0

@JeffB:你說得對。這將在C#中工作。 – 2010-04-20 21:23:10

2

匹配一個空格或行的開頭後,從第一個字。取決於您的使用情況,最後一個字邊界不是必需的。

/(?:^|\s)\#(\w+)\b/ 

圓括號將捕獲您的單詞在一個組中。現在,它取決於語言如何應用這個正則表達式。

(?:...)是一個非捕獲組。

9

試試這個#(\S+)\s?

+0

方式更簡單,做得好! – 2010-04-20 21:23:16

+2

這將返回「#word」而不是「#word」。 \ \?沒有必要 – zincorp 2010-04-20 21:29:33

+0

@zincorp這就是爲什麼有一個'()'搶組1 – Peter 2015-04-10 08:24:51

相關問題