繁体   English   中英

c# 正则表达式在输入未知并且可以包含多个单词时删除单个字符和孤立的空格

[英]c# Regex to remove single characters and orphaned spaces when input is unknown and can contain multiple words

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

我有一个 OCR 程序,它正在从图片中读取标签,其中一些位会在奇数位置导致单个字符出现一些小错误,但所有标签都至少有 2 个字母,任何错误的字母都会被空格填充,至少尾随可能是前导

给定:

  • 米玫瑰
  • aama 这个测试 bcz ^ @
  • k 这个更大的 k
  • 很棒的mz
  • 一个大好词这是关于 LRG 可能的,好一个

期望:

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

我如何摆脱 c# 中的奇数球单打我一直在尝试使用单个和多个 Regex.Replace 几个小时,但无处可去

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

接近但截断单词之间的字母和空格,因此“开放时间”是“OpeHours”,很乐意用空格替换然后另一行来摆脱它们..只是没有得到多个单词,因为长度和出现是随机的,并且我的正则表达式技能充其量只是平均水平,只是似乎应该为此设置一个衬垫,而无需拆分和重新组装。

...出于某种原因在正则表达式之后..我知道可以循环遍历字符串并在前后或其他字符串巫毒方式中查找空格...

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

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

您可以使用

text = Regex.Replace(text, @"(?:\b\w\b|[^\w\r\n])+", " ")

请参阅正则表达式演示

详情

  • (?:\b\w\b|[^\w\r\n])+ - 一个或多个序列
    • \b\w\b - 一个单词 char word
    • | - 或者
    • [^\w\r\n] - 除单词 char 或 CR / LF 以外的任何字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM