【发布时间】:2019-05-17 17:38:57
【问题描述】:
我想从应该有些结构化的配置文件中读取信息。不过,我想为个人喜好提供一些余地。
该文件应包含参数的名称,后跟一个等号(带有可选的前导/尾随空格),以及要分配的实际值。
有效配置文件示例:
schedule = 60
schedule=60
schedule= 60
无效配置文件示例:
schedule 60
schedule => 60
schedule: 60
如果配置文件包含具有正确分配值的可识别参数,我想查找匹配项,如有效配置文件示例所示。
到目前为止,我只能想出以下表达式:
(?<=schedule\s=\s).*$
不幸的是,这只会匹配有效配置文件示例中的第一行。我怎样才能使空格成为可选的,以便所有三个示例都被正则表达式视为有效?请注意,我只对等号的右侧感兴趣。
【问题讨论】:
-
使用
schedule\s*=\s*\K.+或schedule\s*=\s*(.+)。什么是编程语言/工具? -
这确实匹配所有三个有效案例。但是,它也会匹配以下情况:
schedule == 60,这是不正确的,因为分隔符不是单个等号。 -
那么您需要确保将
.*替换为您需要的确切模式。或者至少以数字开头:schedule\s*=\s*\K\d.*/schedule\s*=\s*([0-9].*)。您也可以使用Malay Shah's approach。
标签: regex