正则表达式:匹配到(缓冲区的字符或结尾)但不匹配字符

时间:2014-04-02 07:48:01

标签: regex boost boost-regex

给出smb.conf文件中的以下内容。如何使用boost(perl版本)正则表达式删除 [share_11999] 部分。问题是 [share_11999] 部分可以位于文件的末尾。

以下正则表达式几乎可以工作,除了它删除了下一部分的“[”。

“[[a-zA-Z0-9 _-] +?] [^ \ [] +?path = / store / 11999。*?(\'| \ []” < / p>

[share_11920]
path = /store/11920
writeable = yes
create mask = 0755

[share_11999]
path = /store/11999
writeable = yes
create mask = 0755

[share_12435]
path = /store/12435
writeable = yes
create mask = 0755

基本上问题是匹配任何东西,直到除了字符或缓冲区末尾之外的字符。

1 个答案:

答案 0 :(得分:3)

回答你的一般问题:&#34;除了角色之外,如何匹配任何东西?&#34;
您可以使用以下正则表达式:

"(.*)(?=word)"

这使用&#34;向前看/向后看&#34;构造(?=某事)以匹配所有内容,直到某个单词并排除该单词。

实施例

Test string ==> 'I don't understand the meaning of this word or anything else'
"(.*)(?=word)" applied
'I don't understand the meaning of this'

演示

http://regex101.com/r/nE4dS6