2

我知道这个问题似乎很平庸,但我有一个小问题。我正在尝试匹配类似于此的输入:

%!: Word Word=888 Word=AAA

...使用这个正则表达式:

[A-Za-z]*

我只需要选择第一个单词 witch包含字符。我的 C# 代码:

string res = Regex.Match("[A-Za-z]*", this.Content, RegexOptions.Singleline).Value;

请帮我。它不适合我。

4

4 回答 4

6

你基本上在那里。

你的正则表达式应该是@"\b[A-Za-z]+\b".

然后,如果你想知道为什么你没有得到任何匹配。这是因为您混淆了输入和模式参数:)

你要:

string res = Regex.Match(this.Content, @"\b[A-Za-z]+\b", RegexOptions.Singleline).Value;

不是:

string res = Regex.Match(@"\b[A-Za-z]+\b",this.Content,  RegexOptions.Singleline).Value;

:)

于 2012-05-30T17:53:07.807 回答
1

[A-Za-z]+ 观察括号中任何事物的一次或多次出现。* 将匹配零次或多次出现。

于 2012-05-30T17:28:23.033 回答
1

另一种选择(如果您还需要选择其他单词,这可能很有用)是匹配所有单词并首先选择:

new Regex(@"\b[A-Za-z]+\b").Matches("%!: Word Word=888 Word=AAA")[0]
于 2012-05-30T17:55:37.277 回答
0

在表达式的开头添加一个胡萝卜^以从头开始匹配,也就是只匹配第一个。

于 2012-05-30T17:31:34.147 回答