gpt4 book ai didi

C# 正则表达式 : Combine a look ahead regex and a look behind regex into one

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:02 29 4
gpt4 key购买 nike

我想使用正则表达式过滤掉不使用“\r\n”作为换行符的文件。例如,如果文件包含单个“\n”或单个“\r”,则将被过滤为不合格文件。

我已经找到了:

new Regex(@"(?<!\r)\n").Match(text).Success

这会告诉我文本是否有单个“\n”

并且:

new Regex(@"\r(?!\n)").Match(text).Success

这会告诉我文本是否有单个“\r”

目前我可以写:

!(new Regex(@"(?<!\r)\n").Match(text).Success) && !(new Regex(@"\r(?!\n)").Match(text).Success) 

但是有什么办法可以将两者合二为一吗?

非常感谢。

最佳答案

首先,你永远不应该有一个领先的回顾断言。
根据文本的大小,这会增加 10 倍的速度惩罚
以及合法序列出现的频率。

因此,如果您以回顾断言开始,它实际上会测试每个字符
两次,一次用于断言,一次用于它之后的内容。
在现实中,你会想先找到它之后的那个,它会掉落
一步,提高效率。

为此,您可以交替组合。 \n(?<!\r\n)|\r(?!\n)

关于C# 正则表达式 : Combine a look ahead regex and a look behind regex into one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376148/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com