Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式仅匹配单词中的第一个字母_C#_Regex_Linq - Fatal编程技术网

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

C# 正则表达式仅匹配单词中的第一个字母,c#,regex,linq,C#,Regex,Linq,这应该很简单,因为我似乎在扩展我的正则表达式知识的边界。我只需要一个正则表达式,它将匹配单词中的第一个字母。我只需要以xy或z开头的数组中的字母。这似乎减少了数组中的项目数量。。。但我不知道为什么,因为结果不是我所期望的 Regex regex = new Regex(@"\b[x|y|z]"); string[] array = text.Where(x => regex.IsMatch(x)).ToArray()); // 'text' is an array 以下是您正在搜索的内

这应该很简单,因为我似乎在扩展我的正则表达式知识的边界。我只需要一个正则表达式,它将匹配单词中的第一个字母。我只需要以
x
y
z
开头的数组中的字母。这似乎减少了数组中的项目数量。。。但我不知道为什么,因为结果不是我所期望的

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

以下是您正在搜索的内容:

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

我试过这个,它似乎能满足你的需要:

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

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

此外,您还可以使用
[A-Za-z]
更改
\w
,因为有些将包含
\u
和数字作为单词字符:)

也可以去测试正则表达式。尽管它适用于php、python和javascript,但测试起来仍然很不错:)


希望这对你有所帮助

如果我正确理解了您的答案,那么您希望匹配以字母
x
y
z
开头的单词。在出现
x
y
z
之后,您接受的答案将匹配所有内容

请尝试以下方法:

[xyz]\w+
在这样的文本中

lalalalla Nanna x xaa yaaa zaaa lalala

它将与三个单词相匹配

xaa 
yaaa 
zaaa
个别地

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

[xyz]\w*
相反,哪个会匹配

x
xaa 
yaaa 
zaaa

.

你真的需要正则表达式吗?检查字符串中的第一个字母并检查其x y或z非常容易。我想知道执行此操作的正则表达式。您不应该在字符类中使用
,因为它表示字符
,而不是<代码>[xyz]就足够了。这里也有打字错误吗
x.regex.IsMatch(x)
它应该是
regex.IsMatch(x)
你为什么坚持使用正则表达式?那又如何呢?这是我在前面的回答中试图得到的正确正则表达式。@NealR这种模式
^[xyz]
也应该有效,因为您只想检查第一个字符。@NealR很乐意帮助您:)请注意,表达式将只匹配数组文本每个条目中的第一个单词。因此,假设数组中的每个条目都是一个单词,那么这是否适用于您。也是尝试表达式的一个很好的资源
x
xaa 
yaaa 
zaaa