【问题标题】:Optional whitespace character in this regular expression pattern此正则表达式模式中的可选空白字符
【发布时间】: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


【解决方案1】:

您可以使用以下正则表达式:
^计划\s*=\s*([0-9]+)

值也被分组,因此 Group-1 将仅包含值(在您的情况下为 60)

【讨论】:

  • 谢谢。这将解决我的问题。 I will mark your answer as the solution when the option becomes available.
  • 谢谢@MihkelPajunen。很高兴它对您正在寻找的东西有所帮助
猜你喜欢
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多