Nes*_*k M 7 .net c# regex string
我希望检查字符串是否包含给定单词的所有字符,例如:
var inputString = "this is just a simple text string";
Run Code Online (Sandbox Code Playgroud)
并说我有这个词:
var word = "ts";
Run Code Online (Sandbox Code Playgroud)
现在它应该挑选出包含的单词t和s:
这只是字符串
这就是我正在做的事情:
var names = Regex.Matches(inputString, @"\S+ts\S+",RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
但这并没有让我回复我喜欢的词.如果我只喜欢这样一个角色t,那么它会给我所有包含的单词t.如果我有,st而不是ts,它会让我回到这个词just.
知道这是如何工作的吗?
Win*_*don 11
这是一个LINQ解决方案,比正则表达式更容易让人眼前一亮.
var testString = "this is just a simple text string";
string[] words = testString.Split(' ');
var result = words.Where(w => "ts".All(w.Contains));
Run Code Online (Sandbox Code Playgroud)
结果是:
这
只是
字符串
您可以使用LINQ Enumerable.All
:
var input = "this is just a simple text string";
var token = "ts";
var results = input.Split().Where(str => token.All(c => str.Contains(c))).ToList();
foreach (var res in results)
Console.WriteLine(res);
Run Code Online (Sandbox Code Playgroud)
输出:
// this
// just
// string
Run Code Online (Sandbox Code Playgroud)
您可以使用此模式.
(?=[^ ]*t)(?=[^ ]*s)[^ ]+
Run Code Online (Sandbox Code Playgroud)
你可以动态制作正则表达式.
var inputString = "this is just a simple text string";
var word = "ts";
string pattern = "(?=[^ ]*{0})";
string regpattern = string.Join("" , word.Select(x => string.Format(pattern, x))) + "[^ ]+";
var wineNames = Regex.Matches(inputString, regpattern ,RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3841 次 |
最近记录: |