正则表达式,匹配除 \r \n 之外的所有内容作为普通字符
Posted
技术标签:
【中文标题】正则表达式,匹配除 \\r \\n 之外的所有内容作为普通字符【英文标题】:Regex, match everything except \r \n as normal character正则表达式,匹配除 \r \n 之外的所有内容作为普通字符 【发布时间】:2021-08-21 06:12:24 【问题描述】:我在 C# 中使用正则表达式从文件中获取过滤的行。首先,我将整个 .txt 文件读入一个字符串。在这种情况下,代码在两行之间插入 \r\n。但目前这些不是特殊字符,只是普通的字符串。在一行中,数据由 * char 分隔。我的正则表达式正在一行的某个特殊“单元格”中寻找一些值,如果匹配,它必须在开头和结尾不带 \r\n 的情况下返回整行。 你能看看我的解决方案,给我一个提示,如何在没有 \r\n 的情况下获得匹配?
谢谢!
Regex solution
【问题讨论】:
你不能试试 System.IO.File.ReadAllLines() 并处理每一行而不是读取整个字符串的内容吗? 感谢您的提示,但迭代 trought 行比正则表达式过滤所需行要慢得多。 【参考方案1】:试试这个:
(?<=\\r\\n|^(?!\\r\\n))[^*]*?[*](iLVL_DUMMY)[*](?:[^*]*?[*])+?(2020|2019)[^*]*?[*].*?(?=\\r\\n)
【讨论】:
谢谢,这正是我想要的!【参考方案2】:您可以将[^\r\n]
添加到您的正则表达式的开头和结尾,例如
[^\\r\\n*]*?[*](iLVL_DUMMY)[*][^*]*?[*][^*]*?[*][^*]*?[*][^*]*?[*](2020|2019)[^*]*?[*].*?(?=\\r\\n)
【讨论】:
你好。谢谢你的提示!这就是我尝试过的,但我的问题是,如果第一个值(目前为 0.0000)包含 r 或 n,则直到 r 或 n 的字符将不匹配。我正在寻找一个解决方案,其中 \ 后跟 r 或 n。 第一个值以char开头r
?好的,正则表达式是(?<=(^|\\r\\n)).*?[*](iLVL_DUMMY)[*][^*]*?[*][^*]*?[*][^*]*?[*][^*]*?[*](2020|2019)[^*]*?[*].*?(?=\\r\\n)
Unfurtunatelly,此信息未知,r 或 n 可以是字符串的一部分,但不是必需的。我从 RK_15 得到了正确的解决方案,感谢您的宝贵时间!以上是关于正则表达式,匹配除 \r \n 之外的所有内容作为普通字符的主要内容,如果未能解决你的问题,请参考以下文章