gpt4 book ai didi

C# 正则表达式模式获取单词

转载 作者:行者123 更新时间:2023-11-30 15:42:03 25 4
gpt4 key购买 nike

我正在尝试找出从字符串中获取单词的模式。比如说我的字符串是:

string text = "HI/how.are.3.a.d.you.&/{}today 2z3";

我试图消除 1 个字母或数字以下的任何内容,但它不起作用:

Regex.Split(s, @"\b\w{1,1}\b");

我也试过这个:

Regex.Splits(text, @"\W+"); 

但它输出:

"HI how are a d you today"

我只想得到所有的单词,这样我的最终字符串是:

"HI how are you today"

最佳答案

要获取长度至少为 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”和“I”是有效的词。如果您决定匹配那些您可以改用此模式:

var matches = Regex.Matches(text, @"\b(?:[a-z]{2,}|[ai])\b",
RegexOptions.IgnoreCase);

在这两种模式中,我都使用 \b 来匹配单词边界。如果您输入的是“1abc2”,则“abc”将不会匹配。如果您希望它匹配,请删除 \b 元字符。从第一个模式开始这样做很简单。第二种模式将更改为 [a-z]{2,}|[ai]

关于C# 正则表达式模式获取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com