正则表达式匹配单词中的第一个字母

时间:2015-11-20 20:20:47

标签: c# regex linq

由于某种原因,我应该简单地说,我似乎正在扩展我的正则表达式知识的界限。我只需要一个与单词中第一个字母匹配的正则表达式。我只想要一个以x yz开头的数组中的字母。这似乎减少了数组中的项目数量...但我不确定为什么因为结果不是我所期待的。

Regex regex = new Regex(@"\b[x|y|z]");
string[] array = text.Where(x => regex.IsMatch(x)).ToArray()); // 'text' is an array 

4 个答案:

答案 0 :(得分:2)

尝试

\b([xyz]\w*)

\w*表示零到多个单词字符。使用[]时,字符之间隐含|。因此,[xyz]表示x,y或z。然后放置()来捕获单词。所以,简而言之,我们找到一个单词的开头,然后捕获一串以x,y或z开头的单词字符。

此外,您可以使用\w更改[A-Za-z],因为有些内容会包含_而数字会包含字词:)

也可以here来测试正则表达式。即使它是 php python javascript ,它仍然很适合测试:)

希望这会有所帮助!

答案 1 :(得分:1)

这里可能是您正在搜索的内容:

Regex regex = new Regex(@"^(x|y|z).+$");

答案 2 :(得分:0)

我试过这个,似乎做了你需要的事情:

new Regex(@"\b[x|y|z](?=\w*\b)")

答案 3 :(得分:0)

如果我理解你的回答是正确的,那么你想匹配以任何字母xyz开头的单词。在xyz出现后,您接受的答案将与所有内容相匹配。

试试这个:

[xyz]\w+

在像

这样的文字中
  

lalalalla nananna x xaa yaaa zaaa lalala

它会匹配三个单词

xaa 
yaaa 
zaaa

单独

如果您还想匹配单个出现的字母,请使用

[xyz]\w*
相反,

匹配

x
xaa 
yaaa 
zaaa