正则表达式在文本中查找表达式
本文关键字:查找 表达式 文本 正则表达式 | 更新日期: 2023-09-27 17:55:46
我需要一个正则表达式来避免到处都是基本的替换、循环和"if"。
我正在寻找一个全文中的表达式,可以让我得到这个结果:
'n'n'Lorem'n'n't'n'r'n'Ipsum 't't't Lorem't't'tHello Stackoverflow!
Lorem'r't'nTest lorem ipsum V++ 'n'rO+'n V2.0
我期待的结果是除了'n
、'r
、't
之外的所有单词,我需要第一句话的Lorem
、Ipsum
、Test
和Hello Stackoverflow
,以及V++
和O+
V2.0
。
有没有比删除坏字符并通过正则表达式提取单词更好的方法?
我没有看到使用正则表达式实现您真正想要的简单方法。
我会使用普通的 C# 代码:
var input = @"'n'n'Lorem'n'n't'n'r'n'Ipsum 't't't Lorem't't'tHello Stackoverflow!
Lorem'r't'nTest lorem ipsum V++ 'n'rO+'n V2.0";
var separators = new [] {"'r", "'n", "'t", "''n", "''t", "''r", "''" };
var invalidCharacters = @".,'/?:;'[]{}!@#$%^&*()".ToCharArray();
var rawWords = input.Split(separators, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim()).Where(x => !string.IsNullOrEmpty(x));
var words = rawWords.Where(x => !invalidCharacters.Any(y => x.Contains(y)));
请注意,这会删除Hello Stackoverflow!
,因为它包含以下无效字符之一:!
这是rawWords
的内容:
- 洛雷姆
- 伊普苏姆
- 洛雷姆
- 你好堆栈溢出!
- 洛雷姆
- Test lorem ipsum V++
- O+
- 2.0 版
这是words
的内容:
- 洛雷姆
- 伊普苏姆
- 洛雷姆
- 洛雷姆
- Test lorem ipsum V++
- O+
由于您的要求仍然不清楚 - 坦率地说,我认为您的示例文本包含错误 - 这是我能做的最好的事情。从这里开始,您应该使用此代码并根据需要对其进行修改,以获得实际需要的内容。
's
是正则表达式中空格字符的匹配器。
从 http://www.regular-expressions.info/shorthand.html:
's
代表"空格字符"。再次,这是哪些字符 实际上包括,取决于正则表达式的味道。所有口味 本教程中讨论的它包括[ 't'r'n'f]
。即:'s
匹配空格、制表符、换行符或表单馈送。
因此,您只需为's
编写一个正则表达式,并将所有匹配项替换为string.empty
。