c# Regex用于在输入未知时删除单个字符和孤立空格,并且可以包含多个单词



这几乎类似于Regex中的OR条件和许多其他条件。

我有一个OCR程序,它从图片上读取标签有些位在奇怪的地方会导致一些小错误但所有的标签至少有2个字母任何错误的字母都会被填充至少在尾部,可能是前导

给定:

  • m玫瑰
  • k This Bigger
  • 一个大的好词,这是关于LRG可能和好一个
  • 所需:

  • 这个测试
  • 这大
  • 伟大
  • 一个大的好词,这是关于LRG可能和好一个

我如何摆脱c#中的奇数球单打我已经尝试了几个小时的单一和多个Regex。替换,但我无处可去

str = Regex.Replace(str2, @"([0-9a-zA-Z]{1}) ([0-9a-zA-Z]{2,100})?","$2", RegexOptions.Multiline);

很接近,但是截断了字母和单词之间的空格,所以"开放时间";是"OpeHours"很高兴用空格替换,然后另一行来摆脱它们…只是没有得到多个单词,因为长度和出现次数是随机的,我的正则表达式技能充其量是平均的,似乎应该有一个行符,而不必拆分和重新组装。

…在regex之后是有原因的…我知道可以遍历字符串并查找前后的空格或其他字符串巫术方法…

试试这个.(?= )|(?<= ). |^. | .$:

str = Regex.Replace(str2, @" .(?= )|(?<= ). |^. | .$","", RegexOptions.Multiline);

可以使用

text = Regex.Replace(text, @"(?:bwb|[^wrn])+", " ")

参见regex演示。

细节:

  • (?:bwb|[^wrn])+-一个或多个序列
    • bwb-单字字符字
    • |-或
    • [^wrn]-除字字符以外的任何字符,或CR/LF。