正则表达式在文本中找到表达式

时间:2015-06-12 08:39:43

标签: c# regex

我需要一个正则表达式来避免基本替换,循环和"如果"无处不在。

我正在寻找一个可以让我得到这个结果的全文表达式:

\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以外的所有字词,我需要LoremIpsum,{{1第一句话的{}和Test以及Hello StackoverflowV++。但不是O+

有没有比删除坏字符更好的方法并通过正则表达式提取单词?

2 个答案:

答案 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

的内容
  • Lorem
  • Ipsum
  • Lorem
  • Hello Stackoverflow!
  • Lorem
  • 测试lorem ipsum V ++
  • O +
  • V2.0

这是words

的内容
  • Lorem
  • Ipsum
  • Lorem
  • Lorem
  • 测试lorem ipsum V ++
  • O +

由于您的要求仍然不明确 - 坦率地说,我认为您的示例文本包含错误 - 这是我能做的最好的。从这里开始,您应该使用此代码并按照您需要的方式对其进行修改,以获得您真正需要的内容。