我正在尝试解析以下行:
"\#" 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/