我想在文本中找到单词,其中单词仅包含预选字符集。
例如:我使用正则表达式来分割不在集合中的字符并删除空白的条目
像:
string inp = @"~T!@#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤=";
string reg[] = {"[^A-Za-zšžõäöüŠŽÕÄÖÜ]"};
foreach (string word in inp.Split(reg, StringSplitOptions.RemoveEmptyEntries))
Console.Write(word + " ");
我想要获得的输出是:
T e š t is Ök
答案 0 :(得分:6)
你想要Regex.Split(String, String)而不是String.Split(String [],StringSplitOptions) - 后者没有正则表达式匹配。
有点像以下(测试过):
string inp = @"~T!@#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤=";
string reg = "[^A-Za-zšžõäöüŠŽÕÄÖÜ]";
foreach (string word in Regex.Split(inp, reg))
if (word != string.Empty)
Console.Write(word + " ");
PowerShell测试:
PS> $inp = '~T!@#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`''+*-¤='
PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]' -join ' '
T e š t is Ök
显然你需要过滤掉空字符串,所以
PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]' -ne '' -join ' '
T e š t is Ök
或
PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]+' -join ' '
T e š t is Ök
(虽然后者在开始时仍然包含一个空项目......啊,我会把它留给你。)
答案 1 :(得分:1)
这就是你想要的(测试过的):
string inp = @"~T!@#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤=";
Regex reg = new Regex("[^A-Za-zšžõäöüŠŽÕÄÖÜ]");
foreach (string s in reg.Split(inp))
{
if (String.IsNullOrEmpty(s))
continue;
Console.Write(s + " ");
}