C# 正则表达式问题

标签 c# regex

我正在尝试解析以下行:

"\#" TEST #comment hello world

在我的输入中,#comment 总是出现在行尾。可能有也可能没有评论,但如果有,它总是在行尾。

我使用下面的正则表达式来解析它:

(\#.+)?

我打开了 RegexOption.RightToLeft。我预计它会拉动 #comment hello world。但它正在拉动 "#"TEST #comment hello world"

为什么我的 Regex 表达式没有提取正确的内容,我需要什么有效的 Regex 表达式才能正确提取?

最佳答案

重要的问题是:您如何看待行尾的 # 和注释开头的 # 之间的区别?为简单起见,我们假设 last # 开始评论。

那么,你要匹配的是

  • 一个#
  • 不包含#的任意文本序列
  • 直到行尾

所以让我们将其放入正则表达式中:#[^#]*$。你不需要它的 RightToLeft。据我所知,您也不需要在 C# 正则表达式中转义 #

当然,如果您提供有关如何查看“有效”# 和“评论开始”# 之间差异的信息,则可以找到更优雅的解决方案,允许 # within评论。

关于C# 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636244/

相关文章:

r - 在正向后查找后捕获,除非字符串包含 R 中的排除项

regex - 对正则表达式子匹配进行编号

java - 验证正则表达式中包含模板的字符串

c# - 没有抽象类的实现接口(interface)?

c# - HttpUtility.UrlDecode 有什么意义

c# - 如何只安装 VS2015 的开发人员命令提示符

javascript - Antd 通过模式验证不会触发错误

regex - 正则表达式中的替代捕获组?

c# - SetWinEventHook 窗口最大化事件

java - 为什么 Java 中的 RSA 加密生成的密文长度与 C# 不同