C#正则表达式模式获取单词
本文关键字:单词 获取 模式 正则表达式 | 更新日期: 2023-09-27 18:11:30
我正试图找出从字符串中获取单词的模式。比如说我的字符串是:
string text = "HI/how.are.3.a.d.you.&/{}today 2z3";
我试图消除任何低于1个字母或数字的内容,但它不起作用:
Regex.Split(s, @"'b'w{1,1}'b");
我也试过这个:
Regex.Splits(text, @"'W+");
但它输出:
"嗨,你今天怎么样?">
我只想得到所有的单词,这样我的最后一个字符串是:
"嗨,你今天怎么样?">
要获取所有长度至少为2个字符的单词,可以使用以下模式:'b[a-zA-Z]{2,}'b
。
string text = "HI/how.are.3.a.d.you.&/{}today 2z3";
var matches = Regex.Matches(text, @"'b[a-zA-Z]{2,}'b");
string result = String.Join(" ", matches.Cast<Match>().Select(m => m.Value));
Console.WriteLine(result);
正如其他人在评论中指出的那样,"A"answers"I"是有效的词语。如果你决定匹配那些,你可以使用这个模式:
var matches = Regex.Matches(text, @"'b(?:[a-z]{2,}|[ai])'b",
RegexOptions.IgnoreCase);
在这两种模式中,我都使用了'b
来匹配单词边界。如果您有诸如"1abc2"之类的输入,则不会匹配"abc"。如果希望它匹配,则删除'b
元字符。从第一种模式开始这样做很简单。第二种模式将变为[a-z]{2,}|[ai]
。