我需要一个正则表达式来避免基本替换,循环和"如果"无处不在。
我正在寻找一个可以让我得到这个结果的全文表达式:
\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
,{{1第一句话的{}和Test
以及Hello Stackoverflow
和V++
。但不是O+
有没有比删除坏字符更好的方法并通过正则表达式提取单词?
答案 0 :(得分:0)
\s
是正则表达式中空白字符的匹配器。
来自http://www.regular-expressions.info/shorthand.html:
\s
代表"空白字符"。再次,这个字符 实际上包括,取决于正则表达的味道。各种口味 在本教程中讨论,它包括[ \t\r\n\f]
。那就是:\s
匹配空格,制表符,换行符或换页符。
所以你可以为\s
写一个正则表达式,并用string.empty
替换所有匹配。
答案 1 :(得分:0)
我没有看到使用正则表达式实现what you really want的简单方法。
我会选择普通的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
:
这是words
:
由于您的要求仍然不明确 - 坦率地说,我认为您的示例文本包含错误 - 这是我能做的最好的。从这里开始,您应该使用此代码并按照您需要的方式对其进行修改,以获得您真正需要的内容。