为什么 .NET 多行正则表达式中的 $ 不匹配 CRLF?

2024-01-23

我注意到以下几点:

var b1 = Regex.IsMatch("Line1\nLine2", "Line1$", RegexOptions.Multiline);   // true
var b2 = Regex.IsMatch("Line1\r\nLine2", "Line1$", RegexOptions.Multiline); // false

我很困惑。的文档正则表达式选项 http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx says:

多线: 多行模式。更改 ^ 和 $ 的含义,以便它们分别在任何行的开头和结尾处匹配,而不仅仅是整个字符串的开头和结尾。

由于 C# 和 VB.NET 主要用于 Windows 世界,我猜测 .NET 应用程序处理的大多数文件都使用 CRLF 换行符(\r\n) 而不是 LF 换行符 (\n)。尽管如此,.NET 正则表达式解析器似乎无法将 CRLF 换行符识别为行结束.

我知道我可以解决这个问题,例如,通过匹配Line1\r?$,但我仍然觉得很奇怪。这真的是 .NET 正则表达式解析器的预期行为吗?还是我错过了一些隐藏的行为?UseWindowsLinebreaks option?


来自 MSDN:

默认情况下,$ 仅匹配输入字符串的末尾。如果指定 RegexOptions.Multiline 选项,它将匹配换行符 (\n) 或输入字符串的末尾。但是,它与回车/换行字符组合不匹配。要成功匹配它们,请使用子表达式 \r?$ 而不仅仅是 $。

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx#Multiline http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx#Multiline

所以我不能说为什么(与其他语言的正则表达式兼容?),但至少它是有意的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 .NET 多行正则表达式中的 $ 不匹配 CRLF? 的相关文章

  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐

  • 如何在R中删除包含少于3行数据的组? [复制]

    这个问题在这里已经有答案了 我在 R 中使用 dplyr 包 并按 3 个变量 年份 站点 巢穴 对数据进行分组 我想删除少于 3 行的组 例如 在下面的示例中 我想删除 2 的行 我有很多数据可以用来做这件事 所以虽然我可以费力地手工做这
  • POST方法总是返回403 Forbidden

    我读过了Django CSRF 验证失败 https stackoverflow com questions 4547639 django csrf verification failed以及与 django 和 POST 方法相关的几个问
  • 将具有相同属性的两个对象的方法合并到每个属性的数组中

    我试图将两个对象的方法合并为一个对象 以便为父对象中的每个属性生成一组方法 obj1 prop1 method1 prop2 method2 obj2 prop1 method3 prop2 method4 期望的输出 obj1 prop1
  • Phonegap和Android溢出问题

    看来Android webview根本不关心overflow hidden当 div 溢出时的 css 属性 我拿了一个伟大的代码使用 HTML CSS 进行 GPU 转换的教程 http coenraets org blog 2013 0
  • System.Web.Routing.RouteCollection 和 System.Web.Mvc.RouteCollectionExtensions 都具有相同的简单名称“IgnoreRouteInternal”

    我有一个 ASP NET MVC 项目 我已经快两个月没有工作了 只要我不更改任何代码 在浏览器中调试就可以正常工作 当我修改任何代码 甚至添加空格时 我都会收到此错误 An exception of type System NotSupp
  • 如何在 UIImage 中仅显示图像的一部分?

    I have UIImageView我在其中显示 50x100 图像 我只想显示 50x50 图像的一部分 顶部 我怎样才能做到这一点 在里面移动大图像的非常简单的方法UI图像视图如下 让我们有一张大小为 100 400 的图像 代表某张图
  • 嵌入:mono 与 lua

    我有兴趣了解人们在 C C 应用程序中嵌入 mono NET 的开源实现 的经验 如何分发这样的应用程序以及依赖项是什么 我已经在 OS X 上进行了测试 mono 是一个巨大的框架 数百 MB 我的应用程序的用户都需要这个大框架吗 或者可
  • UI 存储数据的最佳方式是什么

    我正在做一个应用程序 页面上将显示多个项目 对于每个项目都会有很多信息 数据完全在 aspx cs后面的代码中生成并显示在ui中 当用户将鼠标悬停在特定项目上时 除了可见元素之外 我还需要后面代码中的一些其他信息来获取该项目 现在我正在存储
  • 响应 200 错误或响应代码作为错误代码

    所以 作为一名开发人员 我有一个非常基本的问题 休息标准我们有特定原因的 100 个错误代码 like 4xx 如果资源相关 5xx 如果服务器发生异常 还有很多 现在 当谈到实施时 我们会遇到一些情况直接返回404 as the 响应状态
  • 用 sympy 反转排列

    在什么功能sympy combinatorics permutations可以返回给定排列的逆排列吗 在 Google 中搜索不会给出结果 我可以写这个函数 但是如果这个函数已经实现了sympy 这将是不必要的 谢谢你的帮助 您正在寻找 I
  • 使用布局时在 Razor 视图和部分之前/附加注释(ASP.NET MVC 4)

    我的剃刀视图存储在数据库中并通过 VirtualPathProvider 提供给站点 给定某些标志 返回它们的服务将出于调试目的 使用 HTML 注释划分每个视图的开头和结尾 包括额外的调试信息 缓存 版本控制 作者身份等 使用布局时 只有
  • VSCode 在启动时打开特定文件

    目前是否可以在 VSCode 中设置启动时打开的特定文件 我安装了 待办任务 扩展 并且我想在每次加载 VSCode 时默认打开我的 TODO 文件 使用版本1 12 1 编辑 我认为最好的方法是使用可以在启动时运行命令的扩展 例子是 自动
  • 无法批量分配受保护的属性

    更新代码格式以便更好地查看 Folks 我已经研究这个有一段时间了 但我不明白这里可能出了什么问题 我正在使用设计 class User lt ActiveRecord Base has many addresses accepts nes
  • 如何在 Coq 简化过程中应用一次函数?

    据我了解 Coq 中的函数调用是不透明的 有时 我需要使用unfold应用它然后fold将函数定义 主体恢复为其名称 这通常很乏味 我的问题是 是否有更简单的方法来应用函数调用的特定实例 作为一个最小的例子 对于一个列表l 证明右附加 没有
  • 如何显示 MySQL 上最近执行的查询?

    是否有任何查询 方式来显示最后执行的查询ALL服务器 对于那些拥有 MySQL gt 5 1 12 的用户 您可以在运行时全局控制此选项 Execute SET GLOBAL log output TABLE Execute SET GLO
  • iOS Safari:100% 宽度固定位置标题比视口宽

    我遇到了一个特别影响 iOS 上 Safari 的问题 我正在构建一个页面 该页面具有固定位置标题 即视口的宽度 页面的内容是一系列图像 数量可变 应向右滚动 当用户滚动时 标题应保持在原位 在 iOS Safari 上 固定标题比视口稍大
  • ValueError:没有为 Tensorflow 中的任何变量提供梯度

    我正在尝试在 Tensorflow 中创建一个 dice loss 函数 我遇到了张量流的麻烦 执行以下代码 import tensorflow as tf import tensorlayer as tl def conv3d x inC
  • 为什么VIM会高亮某些单词?

    我注意到 使用不同的颜色方案 VIM 会下划线 突出显示某些单词 这是为什么以及如何将其关闭 与另一种配色方案 我在用着spf13 vim 配置 https github com spf13 spf13 vim并使用 Putty 进行远程连
  • 如何使用gradle将apk发布到Maven Central?

    我用 android studio 创建了一个 android 项目 它会生成一些apk 如何使用 gradle 将 apk 发布到 Maven Central 我可以在 apk 的工件中写什么 apply plugin maven app
  • 为什么 .NET 多行正则表达式中的 $ 不匹配 CRLF?

    我注意到以下几点 var b1 Regex IsMatch Line1 nLine2 Line1 RegexOptions Multiline true var b2 Regex IsMatch Line1 r nLine2 Line1 R