正则表达式:先得到任何东西

Regex: Get anything before

我正在编写自己的 .INI 文件 reader 并使其尽可能扩展和固定以在许多情况下工作。

wiki 说有些程序使用“;”注释用分号,有些使用“#”散列。

我正在尝试利用 Regex 删除对任何行值的评论,这是我想出的办法;

这是 INI 文本文件:

t1 = t2
t3 = t4 ;test
t5 = t6 #test

实践中的代码:

value = Regex.Match(value, ".*(?=;|#");

哪个有效!但是只得到第二行和第三行。

正向预测'(?=;|#")',我如何让它成为可选的?(比如,只有当它包含';'或'#'然后子串它),希望我的目标在这里很清楚,如果不让我知道。

你可以使用这个:

^[^;#]*

这将匹配所有非 ;或字符串开头的#字符。如果 ;或 # 不存在,一切都会被匹配。否则它只会匹配字符到 ;或#.

如果不想匹配空行,使用:

^[^;#]+