2010-04-20 107 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

相关问题