使用正则表达式匹配行的开头或什么都不匹配

时间:2017-09-15 13:39:54

标签: regex bash

我在配置文件中有以下内容:

property = 10 //this one
#property = 10 //and this one
#this is a test for #property
#this is a test for property

而我正试图想出一个正则表达式来匹配前两种情况:

#property.*|^property.*

到目前为止,我所做的是:

^#property.*|^property.*
[^\s]#property.*|^property.*

这就是结果:

enter image description here

我尝试了其他变种,但结果发生了变化:

DataSource

以下是我正在使用的在线正则表达式的链接:

https://regex101.com/r/K2tm75/2

我将在grep命令中使用此正则表达式作为bash脚本的一部分。

1 个答案:

答案 0 :(得分:2)

您需要确保在字符串的开头匹配#propertyproperty

我建议

^#?property.*

或 - 仅匹配=和最后的数字:

^#?property *= *[0-9]+$

请参阅regex demo 1regex demo 2

^#?property.*匹配输入的开头,然后是可选的##?匹配1或0次匹配,然后property然后匹配任何0+字符)。

第二种模式 - ^#?property *= *[0-9]+$ - 匹配一个类似的开头,但是,在property之后,匹配零个或多个空格,=,零个或多个空格,然后是1个数字和字符串结尾($)。