正则表达式:先得到任何东西
Regex: Get anything before
我正在编写自己的 .INI 文件 reader 并使其尽可能扩展和固定以在许多情况下工作。
wiki 说有些程序使用“;”注释用分号,有些使用“#”散列。
我正在尝试利用 Regex 删除对任何行值的评论,这是我想出的办法;
这是 INI 文本文件:
t1 = t2
t3 = t4 ;test
t5 = t6 #test
实践中的代码:
value = Regex.Match(value, ".*(?=;|#");
哪个有效!但是只得到第二行和第三行。
正向预测'(?=;|#")',我如何让它成为可选的?(比如,只有当它包含';'或'#'然后子串它),希望我的目标在这里很清楚,如果不让我知道。
你可以使用这个:
^[^;#]*
这将匹配所有非 ;或字符串开头的#字符。如果 ;或 # 不存在,一切都会被匹配。否则它只会匹配字符到 ;或#.
如果不想匹配空行,使用:
^[^;#]+
我正在编写自己的 .INI 文件 reader 并使其尽可能扩展和固定以在许多情况下工作。
wiki 说有些程序使用“;”注释用分号,有些使用“#”散列。
我正在尝试利用 Regex 删除对任何行值的评论,这是我想出的办法;
这是 INI 文本文件:
t1 = t2
t3 = t4 ;test
t5 = t6 #test
实践中的代码:
value = Regex.Match(value, ".*(?=;|#");
哪个有效!但是只得到第二行和第三行。
正向预测'(?=;|#")',我如何让它成为可选的?(比如,只有当它包含';'或'#'然后子串它),希望我的目标在这里很清楚,如果不让我知道。
你可以使用这个:
^[^;#]*
这将匹配所有非 ;或字符串开头的#字符。如果 ;或 # 不存在,一切都会被匹配。否则它只会匹配字符到 ;或#.
如果不想匹配空行,使用:
^[^;#]+